无法使用clang编译Objective-C代码

时间:2012-03-15 19:11:10

标签: objective-c clang

在尝试使用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

3 个答案:

答案 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或更高版本。