Objective c 奇怪的客观-C/C`enum`行为

Objective c 奇怪的客观-C/C`enum`行为,objective-c,c,Objective C,C,我有一个奇怪的问题: 当我创建这样的枚举时: typedef enum { kParcelStatusInTransit, kParcelStatusArrived, kParcelStatusDelivered, kParcelStatusUnknown } ParcelStatus; 我得到一个错误:数字常量之前应该有标识符 当我对成员名称添加哪怕是最小的更改时,也不会出现错误: typedef enum { kChangeParce

我有一个奇怪的问题:

当我创建这样的枚举时:

typedef enum {    
    kParcelStatusInTransit,
    kParcelStatusArrived,
    kParcelStatusDelivered,
    kParcelStatusUnknown
} ParcelStatus;
我得到一个错误:数字常量之前应该有标识符

当我对成员名称添加哪怕是最小的更改时,也不会出现错误:

typedef enum {    
    kChangeParcelStatusInTransit,
    kChangeParcelStatusArrived,
    kChangeParcelStatusDelivered,
    kChangeParcelStatusUnknown
} ParcelStatus;

这怎么可能?错误指的是什么数值常量?这对我来说毫无意义…

你试图定义的一个命名常量可能已经在另一个标题中定义,可能在苹果的一个框架中。您只需为常量选择一个不同的名称。

您试图定义的命名常量之一可能已经在另一个标题中定义,可能是在Apple的某个框架中。您只需为常量选择一个不同的名称。

听起来您不止一次定义枚举,无论是字面上定义还是错误地包含文件。

听起来您不止一次定义枚举,按字面意思或不正确地包含文件。

其中一个常量已在另一个文件中定义。因此,预处理器会将枚举中的标识符替换为其值。编译器随后会看到该常量值并进行投诉,因为它需要一个标识符。

其中一个常量已在另一个文件中定义。因此,预处理器会将枚举中的标识符替换为其值。编译器随后看到这个常量值并抱怨,因为它需要一个标识符。

此外,我可以说,使用-E选项编译文件并在结果文件中查找错误代码将帮助您查看发生了什么。
F.e.:cc-e myfile.c | grep-b6 ParcelStatus

此外,我可以说,使用-e选项编译文件并在结果文件中查找错误代码将帮助您查看发生了什么。
F.e.:cc-e myfile.c | grep-b6 ParcelStatus

您是否可能在某个地方定义了其中一个标识符?如果是这样,预处理器将用它的值替换它,编译器将看到它。@ughoavgfhw您是对的。现在一切都有了意义,我没有在其他头中声明枚举,而是在其他地方定义了。xCode中的语法着色没有帮助,所以我被卡住了。谢谢你,伙计!你能把答案贴出来让我选择吗?也许其他人也会有同样的noobish问题:你有没有可能在某个地方定义了其中一个标识符?如果是这样,预处理器将用它的值替换它,编译器将看到它。@ughoavgfhw您是对的。现在一切都有了意义,我没有在其他头中声明枚举,而是在其他地方定义了。xCode中的语法着色没有帮助,所以我被卡住了。谢谢你,伙计!你能把答案贴出来让我选择吗?也许其他人也会有同样的noobish问题: