1

typedef void (callback)(int *p1, sStruct *p2);

typedef struct _sStruct
{
callback *funct;
}sStruct;

我在 C 中有以下声明。如何编译这个循环声明而不收到任何错误?

目前我收到:第一行'*'标记之前的语法错误。

4

1 回答 1

11

您可以前向声明结构:

/* 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 开头的全局名称_是保留名称,将它们用作您自己的标识符可能会导致未定义的行为。

于 2010-07-28T16:38:27.500 回答