Я пытаюсь свести к минимуму взаимозависимость файлов #include в качестве общей практики.
В xxx.h у меня есть:
struct my_struct; // partial decl to satisfy use of my_struct*
void funct(struct my_struct* ms); // uses the partial def
Как сделать аналогичное частичное decl сtypedef'd struct?У меня есть фактическое decl в третьем #include, которое выглядит (скажем, в yyy.h):
typedef struct my_data_s {
int ival;
... struct's other components ...
} my_data_t;
Я просто хочу, чтобы представитель decl в xxx.h ссылался на typedef:
typedef struct my_data_s my_data_t; // actual full decl is elsewhere
void funct2(my_data_t* md);
Эта попытка вызывает ошибку 'redefinition of typedef my_data_t'.(Использование gcc 4.4.3 / Ubuntu 10.4) Другие попытки случайного поиска (например, добавление '{}' в typedef) также приводят к ошибкам.
Я знаю, что компилятору нужно только знать, что функция требует указатель,кажется, это должно быть возможно.До сих пор не было найдено ничего, что компилирует без ошибок / предупреждений.
Я посмотрел другие вопросы и ответы, не смог найти эту проблему решенной.Похоже, должен быть общеизвестный способ сделать это (?!) (я знаю, что могу #include yyy.y всякий раз, когда #include xxx.h - пытаясь избежать таких зависимостей.) Спасибо.