我定义的常量给出了'未声明的标识符'问题。我将它们放在Constants.h
文件中,我将其包含在.pch文件中。我认为它可能与我的.pch文件有关,但是,如果我从那里删除它并在其中一个需要其中一个常量的类中尝试#import
,那么我仍然得到一个“未声明的标识符”错误。
如果我将每个#define
行直接放在.m类文件的顶部,它们就可以工作。所以我的语法是正确的。
所以这与.h文件本身有关,但我不知道是什么。
//
// Constants.h
// Sliding Drawer
#define kOffscreenX 320 // X coord when Sliding Drawer is offscreen
#define kVisibleX 40 // X coord when Sliding Drawer is visible
// WordlistButton
#define kNumScores 3
// Fonts
#define kMessageFontSize 14
#define kScoreFontSize 10
答案 0 :(得分:3)
仅从这段代码中看不到错误是不可能的。预处理器往往会产生非常混乱的东西,特别是当涉及循环导入时。
你可以尝试删除标题的当前编译版本,注意它不在derived data
文件夹中,它在XCode的缓存中(参见Project - > Build Setttings - >预编译标题缓存路径)。 / p>
但是,如果您尝试直接导入Constants.h
并且无效,则问题可能出在其他地方。
您确定只有一个名为Constants.h
的文件吗?请注意,您应该为文件使用前缀(例如SAConstants.h
,如果Smooth Almonds
是您的名字),以避免与Apple正在使用的库的标题或标题发生冲突。
如果您直接导入标题,请转到.m
文件,然后点按Product -> Generate Output -> Preprocessed File
并在其中找到Constants.h
导入。这是你的标题吗?
顺便说一句,有一篇关于在预编译头文件中避免此类事情的文章http://qualitycoding.org/precompiled-headers/
答案 1 :(得分:0)
由于我的define语句中的其他错误upper case parameter
,我发现了这个帖子。我解决了我的下壳问题:
#define MSB(BTvalue) ((uint8_t) (BTvalue >> 8)) //threw this error
使用小写参数将 BTvalue 更改为值让我感到高兴
#define MSB(value) ((uint8_t) (value >> 8))