我正在做这个
if ([resourceCompletionReward objectAtIndex:experienceD] != 0) {
但是 Xcode 给了我一个错误:
预期表达
我定义experienceD
为
#define experienceD 0;
我究竟做错了什么?
我正在做这个
if ([resourceCompletionReward objectAtIndex:experienceD] != 0) {
但是 Xcode 给了我一个错误:
预期表达
我定义experienceD
为
#define experienceD 0;
我究竟做错了什么?
分号不应该在那里。
#define experienceD 0
会编译得很好。
此外,使用这样的 UPPER_CASE_NOTATION 命名常量也是一个好习惯。
为了完整起见,我将添加 Apple 建议(来自Coding Guidelines for Cocoa)
通常,不要使用#define 预处理器命令来创建常量。对于整数常量,使用枚举,对于浮点常量,使用 const 限定符
并且
如果常量与其他常量无关,您可以使用 const 创建一个整数常量;否则,使用枚举
因此,在您的特定情况下,最好将常量定义为
static const int ExperienceD = 0;
您不应该使用#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;
};