typedef void (callback)(int *p1, sStruct *p2);
typedef struct _sStruct
{
callback *funct;
}sStruct;
我在 C 中有以下声明。如何编译这个循环声明而不收到任何错误?
目前我收到:第一行'*'标记之前的语法错误。
typedef void (callback)(int *p1, sStruct *p2);
typedef struct _sStruct
{
callback *funct;
}sStruct;
我在 C 中有以下声明。如何编译这个循环声明而不收到任何错误?
目前我收到:第一行'*'标记之前的语法错误。
您可以前向声明结构:
/* Tell the compiler that there will be a struct called _sStruct */
struct _sStruct;
/* Use the full name "struct _sStruct" instead of the typedef'ed name
"sStruct", since the typedef hasn't occurred yet */
typedef void (callback)(int *p1, struct _sStruct *p2);
/* Now actually define and typedef the structure */
typedef struct _sStruct
{
callback *funct;
} sStruct;
编辑:更新以匹配问题类型名称的更改。
另外,我强烈建议你不要给结构标识符_sStruct
。以 a 开头的全局名称_
是保留名称,将它们用作您自己的标识符可能会导致未定义的行为。