如何在Windows中编译Objective-C代码以成功执行我的代码?

因此,根据本网站的指示,我从GNUStep网站下载了GNUStep Windows安装程序

然后我按以下顺序安装了以下的稳定版本:

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 -LC:/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 

我相信第一个错误(stream浪'@')可能是由于一个较旧的编译器,但我不知道其他错误。 我查了一下错误,但没有一个解决scheme涉及到我的情况。 任何人都可以帮助一个Windows Objective-C编译器?

这是在llvm中引入的新语法 :

 NSArray *funnyWords = @[@"Schadenfreude", @"Portmanteau", @"Penultimate"]; 

检查文档以查找为词典和数字文字定义的新语法的其他示例。

旧的语法是一样的

 NSArray *funnyWords = [NSArray arrayWithObjects:@"Schadenfreude", @"Portmanteau", @"Penultimate", nil]; 

请注意最后的nil ,重要的是在那里添加旧API来知道何时停止。

关于逗号运算符的其余错误是对新语法的“误解”相同的结果。