我用这段代码设置我的常量
// Constants.h extern NSInteger const KNameIndex; // Constants.m NSInteger const KNameIndex = 0;
在导入Constant.h文件的文件中的switch语句中,我有:
switch (self.sectionFromParentTable) { case KNameIndex: self.types = self.facilityTypes; break; ...
我在编译时遇到错误:"错误:case标签不会减少为整数常量"
什么想法可能搞砸了?
对于C/C++和Objective-C,case语句必须具有固定值 - 在编译时"缩减为整数(读取值) "
你的常量不是一个真正的"常量",因为它是一个变量,我想它可以通过指针改变 - 即 &KNameIndex
通常将常量定义为 enum
enum { KNameIndex = 0, kAnotherConstant = 42 };
如果您使用C++或Objective-C++(.mm作为文件扩展名),您可以使用const语句作为
const int KNameIndex = 0;
您可以使用
#define KNameIndex 0 ... switch (self.sectionFromParentTable) { case KNameIndex: self.types = self.facilityTypes; break; ...
它应该工作.
刚遇到同样的问题,我决定选择#define而不是enum.为我工作™;-)