2

我有这个代码的 pch 文件:

#import "ServerModel.h"

enum {
    SAVE = 1,
    REMOVE = 2,
    REMOVE_ALL = 3
};
typedef NSInteger RequestType;

我正在尝试RequestType在 ServerModel.h 中使用,但编译器对我的枚举一无所知。我试图为我的枚举创建头文件并将这个文件导入 pch-file 但没有任何改变。

#import所以基本问题是:我不能在这个 pch 文件中编辑的文件中使用 .pch 文件中的枚举。

有没有办法处理这个问题?pch-file 是放枚举的好地方吗?

升级版:

我试图将所有这些枚举放在一个头文件中,并将#import该文件放在#importpch 文件中所有 s 的末尾,但它不起作用。但后来我把

#import "Enums.h" // my file with enums

在 pch 文件的开头,在所有其他#imports 之前,它正在工作。

如果有人能解释#importbefore 或 after some other的位置差异,我会很高兴#import

UPD2:

我会尽量让它更清楚:

我有Enums.h枚举:

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像这样切换 s 时:

#import "Enums.h"
#import "ServerModel.h"

万事皆安

4

1 回答 1

2

案例1:如果你这样导入

#import "ServerModel.h"
#import "Enums.h"

然后编译器会在遇到语句ServerModel.h之前检查文件。在检查您时,它发现一个并说WTF 是 RequestType?? 并在你的脸上抛出错误。Enums.h#import "ServerModel.h"ServerModel.htoken RequestType

案例2:如果你写这个

#import "Enums.h"
#import "ServerModel.h"

然后编译器编译Enums.h成功,然后编译ServerModel.h,它再次找到 atoken RequestType并说是的,我知道这是 atypedefNSInteger定义的Enums.h。最后它愉快地继续前进。

于 2013-01-21T10:16:29.790 回答