Я определил 2 макроса:
#define HCL_CLASS(TYPE) typedef struct TYPE { \
HCLUInt rc; \
void (*dealloc)(TYPE*);
#define HCL_CLASS_END(TYPE) } TYPE; \
TYPE * TYPE##Alloc() { TYPE *ptr = (TYPE *)malloc(sizeof(TYPE)); if (ptr != NULL) ptr->rc = 1; return ptr; }
Цель этих макросов - создать структуру C с некоторыми предопределенными функциями (retain count и deallocator) и автоматически создать функцию распределителя.
Теперь, когда я использую эти макросы следующим образом:
HCL_CLASS(Dummy)
int whatever;
HCL_CLASS_END(Dummy)
они расширяются в это (взято непосредственно из XCode):
typedef struct Dummy { HCLUInt rc; void (*dealloc)(Dummy*);
int whatever;
} Dummy; Dummy * DummyAlloc() { Dummy *ptr = (Dummy *)malloc(sizeof(Dummy)); if (ptr != ((void *)0)) ptr->rc = 1; return ptr; }
И когда я пытаюсь скомпилироватьпри этом я получаю две ошибки:
- «Ожидается») перед «*» токеном в строке, которая вызывает HCL_CLASS
- «Ожидается»;перед 'int' 'в строке, которая объявляет член структуры int
Я не вижу причину этих ошибок.Я был бы благодарен, если бы вы помогли мне найти его.Благодаря.