【发布时间】:2011-09-21 15:46:38
【问题描述】:
我写的是:
typedef enum _MyStatus
{
MY_STATUS_OK = 0,
MY_STATUS_GENERAL_ERROR = -1,
} MyStatus;
typedef MyStatus (*MyCallback)(MySettings *settings);
typedef struct _MySettings
{
MyCallback callback;
} MySettings
但是,它不会编译,因为在定义 MyCallback 时它不知道 MySettings。如果我交换 MySettings 和 MyCallback,情况会相反:MySettings 不会知道 MyCallback。
这类问题在 C 中的处理一般如何?
谢谢!
【问题讨论】:
-
注意你可以这样声明一个枚举:`enum MyStatus { MY_STATUS_OK = 0, MY_STATUS_GENERAL_ERROR = -1, };
-
是的,但我总是得写成
enum MyStatus,不是吗? -
没有。我总是以这种方式声明我的枚举,并且在使用它们时从不指定枚举。也许在 ANSI C 中没有那么简单,但在现代 C++ 中,它可以正常工作。
-
在 C++ 中肯定可以工作。
structs也一样。在这方面 C 和 C++ 不同。
标签: c struct typedef definition