2011-02-23 69 views
0

我有以下的Objective-C頭文件:預計符限定符列表

// Menu.h 

#import <UIKit/UIKit.h> 
#import "GameController.h" 

@interface Menu : UIImageView { 
    GameController *gameController; // "Expected specifier-qualifier-list 
             // before GameController" 
} 

- (void)appear; 

@end 

// GameController.h 

#import <UIKit/UIKit.h> 
#import "Menu.h" 

@interface GameController : UIView { 
    Menu *menu;      // "Unknown type name 'Menu'" 
} 

- (void)startLevel0; 
- (void)startLevel1; 
- (void)startLevel2; 

@end 

當我嘗試生成項目時,Xcode(V4)罵我,稱Expected specifier-qualifier-list before GameControllerunknown type name 'Menu'。我確定他們有某種相關性,但我不知道如何?

回答

0

使用相互包含的頭文件不是好習慣。而不是導入Menu.h,使用@class指令。嘗試刪除#import "Menu.h"並在其位置添加@class Menu。同上Menu.h(刪除GameController include,並添加@class指令)

+0

它的工作!謝謝。 – aniiye 2011-02-23 17:03:00

0

您在導入中有循環引用。編譯器從import語句構建一個依賴樹,所以當兩個類相互依賴時,它不知道如何先編譯一個。

不幸的是,當這種情況發生時,gcc發出了一個相當荒謬的錯誤陳述「Expected specifier-qualifier-list」。 @yan是正確的,你應該使用@class指令。看看這個問題的一個堅實的解釋:@class vs. #import

相關問題