我正在做本书的教程:Neil Smyth撰写的“Objective-C 2.0 Essentials第3版”。我已经反复尝试过,但即使书籍版本声称要运行,仍然会出现相同的“预期表达式”错误。我检查了太多次,我的版本与书籍完全相同。请有人帮助我。代码如下:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
@autoreleasepool {
int x;
int j = 54321;
for (x = 0; x < 10; x++) {
}
int j = x + 10;
NSLog (@"Variable j in for loop is %i", j);
NSLog (@"Variable j outside for loop is %i", j); /* I GET AN ERROR STATING " EXPECTED EXPRESSION HERE*/
}
return 0;
}
答案 0 :(得分:4)
该行
NSLog (@"Variable j outside for loop is %i", j);
在Tab和“NSLog”之间包含许多不可见字符(UTF-8序列EF BF BC
= OBJECT REPLACEMENT CHARACTER)。
删除并重写该行应该有所帮助。
OP的代码在hexa编辑器中打开:
答案 1 :(得分:1)
更好地格式化代码;如果你在代码中放错了地方}
变得很明显:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
@autoreleasepool {
int x;
int j = 54321;
for (x = 0; x < 10; x++) {
int j = x + 10;
NSLog (@"Variable j in for loop is %i", j);
}
 NSLog (@"Variable j outside for loop is %i", j);
}
return 0;
}
编辑 @MartinR指出的隐形字符也是一个问题(我没注意到)。所以你的代码中有两个错误。