Структура должна иметь следующий вид
struct A
{
A* next;
};
И должна компилироваться на всех Си и Си++ компиляторах.
Смог придумать только 3 варианта как это сделать:
typedef struct A1 A1;
struct A1
{
A1* next;
};
struct A2
{
struct A2* next;
};
typedef struct _A3
{
struct _A3* next;
} A3;
void TestA1( A1* obj ) {}
void TestA2( struct A2* obj ) {}
void TestA3( A3* obj ) {}
Проблема второго варианта: нужно писать слово struct при использовании структуры.
Проблема третьего варианта: член структуры имеет тип который не используется (_A3) и только вносит путаницу при большом числе членов класса.
Первый же вариант лишён этих проблем.
Остаётся вопрос на всех ли Вам известных компиляторах Си и Си++ компилируется приведённый код?
В особенности интересует первый вариант. И если он так удобен, то почему им мало кто пользуется?