我有带有以下代码的pch-文件:
#import "ServerModel.h"
enum {
SAVE = 1,
REMOVE = 2,
REMOVE_ALL = 3
};
typedef NSInteger RequestType;我试图在ServerModel.h中使用RequestType,但是编译器对我的枚举一无所知。我试图为我的枚举创建头文件,并在pch-文件中导入这个文件,但是没有什么改变。
因此,基本的问题是:我不能在文件中使用来自.pch文件的枚举,这是在这个pch文件中编辑的#import文件。
有什么办法解决这个问题吗?pch档案是放置枚举的好地方吗?
UPD:
我试着把所有这些枚举放在一个头文件中,然后在pch-文件中的所有#import文件的末尾放置这个文件,但是它不起作用。但后来我把
#import "Enums.h" // my file with enums
在pch文件的开头,在所有其他#import之前,它已经开始工作了.
如果有人能解释#import在其他#import之前或之后的位置上的差异,我会很高兴的。
UPD2:
我会尽量让它更清楚:
我有Enums.h和enum:
enum {
SAVE = 1,
REMOVE = 2,
REMOVE_ALL = 3
};
typedef NSInteger RequestType;MyProject-Prefix.pch,包括:
#import "ServerModel.h"
#import "Enum.h"以及具有以下代码的ServerModel.h:
- (void)unlinkAccountWithRequestType:(RequestType)requestType;我得到了一个错误:这个方法的Expected a type。我已经清理了我的项目,并得到了同样的错误。
当我像这样切换#import时:
#import "Enums.h"
#import "ServerModel.h"一切都很好
发布于 2013-01-21 10:16:29
Case1 :如果您像这样导入,
#import "ServerModel.h"
#import "Enums.h"然后编译器将在ServerModel.h文件遇到#import "ServerModel.h"语句之前检查它。在检查ServerModel.h时,它找到了一个token RequestType,它说WTF是RequestType??,并向您脸上抛出错误。
案例2:如果您编写以下内容,则为
#import "Enums.h"
#import "ServerModel.h"然后编译器成功地编译Enums.h,然后编译ServerModel.h,然后再找到一个token RequestType,并说是的,我知道这是在Enums.h中定义的typedef of NSInteger。最后,它快乐地向前移动。
https://stackoverflow.com/questions/14404088
复制相似问题