2011-06-29 47 views
0
#import <Foundation/NSArray.h> 
#import <Foundation/NSString.h> 
#import <Foundation/NSAutoreleasePool.h> 
#import <Foundation/NSEnumerator.h> 
#import <stdio.h> 

void print(NSArray *array) { 
NSEnumerator *enumerator = [array objectEnumerator]; 
id obj; 

while (obj = [enumerator nextObject]) { 
    printf("%s\n", [[obj description] cString]); 
} 
} 

int main(int argc, const char *argv[]) { 
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
NSArray *arr = [[NSArray alloc] initWithObjects: 
       @"Me", @"Myself", @"I", nil]; 
NSMutableArray *mutable = [[NSMutableArray alloc] init]; 

// enumerate over items 
printf("----static array\n"); 
print(arr); 

// add stuff 
[mutable addObject: @"One"]; 
[mutable addObject: @"Two"]; 
[mutable addObjectsFromArray: arr]; 
[mutable addObject: @"Three"]; 

// print em 
printf("----mutable array\n"); 
print(mutable); 

// sort then print 
printf("----sorted mutable array\n"); 
[mutable sortUsingSelector: @selector(caseInsensitiveCompare:)]; 
print(mutable); 

// free memory 
[arr release]; 
[mutable release]; 
[pool release]; 

return 0; 
} 

該程序在windows中使用oscv0.1.4進行編譯。 它給出了一個錯誤如下所示目標c上的解析錯誤

Error: Parse error on line 6: 
...import <stdio.h> 

void print(NSArray 
---------------------^ 
Expecting 'INTERFACE', 'IMPLEMENTATION', 'PROTOCOL', 'IMPORT', 'CLASS', 'DEFINE', 'EOF' 

現在我得到下面示出的程序的一個以上的錯誤(這是另一個程序)

#import "Forwarder.h" 
#import "Recipient.h" 

int main(void) 
{ 
    Forwarder *forwarder = [Forwarder new]; 
    Recipient *recipient = [Recipient new]; 

[forwarder setRecipient:recipient]; //Set the recipient. 
[forwarder hello]; 

[recipient release]; 
[forwarder release]; 

return 0; 
} 

誤差是

Error: Parse error on line 3: 
...Recipient : Object 
- (id)hello; 
@end#i 
----------------------^ 
Expecting '<', '{' 
+1

我從來沒有聽說過oscv(並且我沒有看到有關快速谷歌搜索的相關內容);你有沒有試過像GCC這樣的編譯器? oscv是否有選擇向您顯示預處理的源文件(相當於GCC的'-E'選項)? –

+0

通過此鏈接http://code.google.com/p/oscompiler/downloads/list –

+0

我編譯並運行這個編譯器的另一個程序。沒關係。 –

回答