2011-02-23 67 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

相关问题