我正在做这个
if ([resourceCompletionReward objectAtIndex:experienceD] != 0) {
但是Xcode给了我一个错误:
预期表达
我已将experienceD
定义为
#define experienceD 0;
我做错了什么?
答案 0 :(得分:7)
分号不应该在那里。
#define experienceD 0
编译得很好。
使用像这样的UPPER_CASE_NOTATION来命名常量也是一个好习惯。
为了完整起见,我将添加Apple建议(来自Coding Guidelines for Cocoa)
通常,不要使用#define预处理程序命令来创建常量。对于整数常量,使用枚举,对于浮点常量,使用const限定符
以及
如果常量与其他常量无关,则可以使用const创建整数常量;否则,使用枚举
因此,在您的特定情况下,最好将常量定义为
static const int ExperienceD = 0;
答案 1 :(得分:1)
您不应该使用#define
来定义常量。 #define
所做的只是文本替换,因此在您的情况下,编译器会看到
if ([resourceCompletionReward objectAtIndex:0;] != 0) {
并抱怨;
它不应该在哪里。
如果你想计算常数,这可能会特别麻烦:
#define CONSTANT 1 + 2
int y = 2 * CONSTANT;
编译器执行简单的文本替换,以便获得
int y = 2 * 1 + 2;
这不是预期的值。要解决这个问题,您可以记住在每个#defined常量周围添加括号。
定义常量的更好方法是使用const
变量:
static const int experienceD = 0;
如果您定义了许多具有连续整数值的常量,您也可以使用枚举。
enum {
experienceD = 0;
};