1

因此,根据该站点的说明,我从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 -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

我相信第一个错误(流浪'@')可能是由于较旧的编译器,但我不知道其他错误。我查找了错误,但没有一个解决方案与我的情况有关。任何人都可以帮助 Windows Objective-C 编译编码器吗?

4

1 回答 1

1

这是llvm 中引入的新语法

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

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

相同的旧语法是

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

请注意nil最后,将其添加到旧 API 以了解何时停止非常重要。

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

于 2013-11-13T15:48:11.883 回答