xix*_*xao 3 objective-c include
我有一个目前在Windows,Linux和iOS上运行的多平台项目,但是我偶然发现了Objective-C的不良问题。
不幸exp的是,我为我的一种类型选择了名称(表达式,考虑到我的代码中出现的次数,这是相当合理的),但是Objective-C math.h默认情况下以某种方式包含了标题,从而产生了名称冲突。
我试图注释掉.pch(默认在每个源文件之前包含的前缀文件)中的所有内容,并且exp仍标记为重定义。
有人知道如何在Objective-C项目的源文件中不包含math.h吗?
Objective-C没有正式的规范,但是它继承自C的功能。在C中,程序不应使用标准标头中的标识符,即使它们不包含这些标头也是如此。因此,您不应将“ exp”用作自己的标识符。
如果您坚持使用“ exp”,则可以使用预处理程序语句解决该问题:
#define exp MyExp
Run Code Online (Sandbox Code Playgroud)
这样,您就可以在源代码中编写“ exp”,就好像它是标识符之一一样。由于预处理器会将其更改为“ MyExp”,因此编译器将看到“ MyExp”作为标识符,并且不会抱怨。
这将导致许多问题,例如标识符在目标代码信息和调试工具中显示为“ MyExp”,并导致将来无法使用math.h中的exp。