因此,根据此site的说明,我从GNUStep网站下载了GNUStep Windows Installer
然后我按此顺序继续安装以下的稳定版本:
GNUstep MSYS System
GNUstep Core
GNUstep Devel
然后我写下面的代码:
#import <Foundation/Foundation.h>
int main(int argc, const char *argv[]){
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSArray *funnyWords = @[@"Schadenfreude", @"Portmanteau", @"Penultimate"];
for (NSString *word in funnyWords) {
NSLog(@"%@ is a funny word", word);
}
[pool drain];
return 0;
}
要编译代码,我尝试使用此命令:
$ gcc `gnustep-config --objc-flags` -o hello hello.m -L C:/GNUstep/GNUstep/Syst
em/Library/Libraries -lobjc -lgnustep-base
虽然这对于我写的其他代码是成功的,但这一次它给了我这些错误:
hello.m: In function 'main':
hello.m:7:23: error: stray '@' in program
hello.m:7:41: warning: left-hand operand of comma expression has no effect [-Wun
used-value]
hello.m:7:57: warning: left-hand operand of comma expression has no effect [-Wun
used-value]
hello.m:7:73: error: expected ':' before ']' token
我相信第一个错误(stray'@')可能是由于较旧的编译器,但我不知道其他错误。我查看了错误,但没有一个解决方案与我的情况有关。任何人都可以帮助Windows Objective-C编译编码器吗?
答案 0 :(得分:1)
这是new syntax that has been introduced in llvm:
NSArray *funnyWords = @[@"Schadenfreude", @"Portmanteau", @"Penultimate"];
检查文档以获取新语法的其他示例,该语法是为字典和数字文字定义的。
相同的旧语法是
NSArray *funnyWords = [NSArray arrayWithObjects:@"Schadenfreude", @"Portmanteau", @"Penultimate", nil];
请注意最后的nil
,重要的是在那里添加旧API以了解何时停止。
关于逗号运算符的其余错误是对新语法的“误解”的结果。