C: указатель на структуру в определении структуры

Рассматривали ли вы использование Test Orchestrator ? В своей документации говорится, что:

Аварии изолированы . Даже если один тест дает сбой, он снимает только свой собственный экземпляр Instrumentation, поэтому другие тесты в вашем наборе все еще выполняются.

blockquote>

Я полагаю, что сбой, который вы видите, происходит в тестируемом приложении, то есть сбой приводит к сбору инструментов, когда это происходит. Предполагается, что использование Test Orchestrator позволит запускать последующие тесты, даже если это произойдет.

50
задан Jens 27 May 2012 в 21:54
поделиться

5 ответов

Можно определить определение типа и вперед объявить структуру сначала в одном операторе и затем определить структуру в последующем определении.

typedef struct A A;

struct A
{
    int a;
    int b;
    A* next;
};

Редактирование: Как другие упомянули без предописания, имя структуры все еще допустимо в определении структуры (т.е. Вы можете используемый struct A), но определение типа не доступно, пока определение определения типа не завершено (настолько использующий всего A, не было бы допустимо). Это не может иметь значения слишком много со всего одним участником указателя, но если у Вас есть сложная структура данных с большим количеством указателей самотипа, может быть менее управляемым.

69
ответ дан Jonathan Leffler 7 November 2019 в 10:30
поделиться

В дополнение к первому ответу, без определения типа и предописания, это должно быть прекрасным также.

struct A 
{ 
    int a; 
    int b; 
    struct A *next; 
};
60
ответ дан Chris Young 7 November 2019 в 10:30
поделиться

Вы отсутствуете struct перед A*

  typedef struct A {
    int a;
    int b;
    struct A* next;
  } A;
17
ответ дан Miles D 7 November 2019 в 10:30
поделиться

Можно обойтись без помощи предописания:

struct A {
    int a;
    int b;
    struct A *next;
};
13
ответ дан qrdl 7 November 2019 в 10:30
поделиться

Вы находитесь в C, не C++.

, Если Вы действительно должны определение типа структура (и большинство программистов, с которыми я работаю, был бы notВ№), сделайте это:

typedef struct _A {
    int a;
    int b;
    struct _A *next;
} A;

для ясной дифференциации между _Astruct пространство имен) и A (в пространстве имен типа).

В№ typedef скрывает размер и устройство хранения данных типа, на который это указывает на †• аргумент (и я соглашаюсь), то, что на низкоуровневом языке как C, пытаясь скрыться что-либо вредно и контрпродуктивно. Привыкните к вводу struct A каждый раз, когда Вы имеете в виду struct A.

8
ответ дан ephemient 7 November 2019 в 10:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: