Я нахожу foo.h файл, имеющий:ли это распространенный способ определения интерфейса в C
typedef STRUCT_s STRUCT;
STRUCT *foo();
и foo.c файл:
#include "i_foo.h"
struct STRUCT_s{
//...
};
#define STRUCT struct STRUCT_s
STRUCT *foo()
{
STRUCT *s;
//...
return s;
}
ли это общий способ скрыть определение структуры в C? Если да, то интересно, если структура не объявлена в заголовке, как клиент должен ее использовать?
Это '# define' это * странно, * не говоря уже о ** неправильно ** (из-за полуколония). Но даже когда это удалит, оно останется * странным. * – Angew
Я предлагаю вам заглянуть в [pimpl idiom] (https://en.wikipedia.org/wiki/Opaque_pointer#C) вместо странных хаков вроде этого. –
@Angew Извините, это была моя ошибка. Нет точки с запятой. Это код клиента. Я не уверен, что я пропущу что-то в C, или код является кандидатом-победителем IOCCC –