具有已定义常量的“未声明标识符”错误

时间:2013-04-03 08:14:52

标签: ios objective-c xcode

我定义的常量给出了'未声明的标识符'问题。我将它们放在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

2 个答案:

答案 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))