对宏使用未声明的标识符

时间:2012-08-30 13:45:40

标签: iphone objective-c ios xcode macros

在我的应用中,我正在执行以下步骤

1)创建.h文件Say,GlobalMacros.h

在GlobalMacros.h中

#define IP_ADDR @“SERVER_IP”

2)在我的应用.pch文件

import “GlobalMacros.h”

然后在其他类中,我在iOS中使用此IP_ADDR宏< 5.0没有问题,但在iOS> 5.0中我收到错误使用未声明的标识符IP_ADDR

1 个答案:

答案 0 :(得分:3)

原因之一是:

  • 如果构建版本低于iOS5,则.pch file进行一些#if测试,有条件地包含#import "GlobalMacros.h"

  • GlobalMacros.h文件中包含条件#if

  • 某些标头或源文件中包含#if语句,该语句取消定义IP_ADDR

  • 在小于iOS5的项目中,.pch文件使用的是不同的GlobalMacros.h文件,而不是其中定义了IP_ADDR的文件

编辑:我应该在Xcode4.5中添加,我将此全局宏文件包含在我的.pch文件中。出于某种原因,预处理器变得混乱,源代码编辑器在许多文件中显示未知的宏,似乎是随机的。我正在做的是当我收到错误时,将全局宏文件添加到受影响的文件中。