在尝试使用clang编译它时,我遇到跟随Objective-C代码的错误。
Obj-C代码:
// first program example
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
@autoreleasepool {
NSLog (@"Programming is fun!");
}
return 0;
}
错误讯息:
main.m:6:5: error: unexpected '@' in program
@autoreleasepool {
^
main.m:7:38: error: extraneous ')' before ';'
NSLog (@"Programming is fun!");
^
main.m:7:16: warning: expression result unused [-Wunused-value]
NSLog (@"Programming is fun!");
^~~~~~~~~~~~~~~~~~~~~~
main.m:9:5: error: expected identifier or '('
return 0;
^
main.m:10:1: error: expected external declaration
}
^
1 warning and 4 errors generated.
我可以在XCode中无错误地编译。
Clang信息: Apple clang 2.1版(标签/ Apple / clang-163.7.1)(基于LLVM 3.0svn) 目标:x86_64-apple-darwin11.3.0 线程模型:posix
答案 0 :(得分:5)
您需要使用clang v3.0或更高版本才能使用@autoreleasepool
。
答案 1 :(得分:3)
假设您的系统路径上有clang 3.0,您可以使用以下代码编译代码:
clang -Wall -framework Foundation prog_name.m -o prog_name
答案 2 :(得分:2)
你需要升级你的Clang; @autoreleasepool{}
指令与ARC同时发布,需要v3.0或更高版本。