【发布时间】:2012-08-09 19:11:20
【问题描述】:
我有一个多平台项目,目前在 Windows、Linux 和 iOS 上运行,但我偶然发现了 Objective-C 的一个不良问题。
不幸的是,我为我的一种类型选择了名称exp(表达式,考虑到我的代码中出现的次数非常合理),但Objective-C默认包含math.h标头,创建一个名字冲突。
我尝试注释掉 .pch 中的所有内容(每个源文件之前默认包含的前缀文件),exp 仍被标记为重新定义。
有人知道如何不在 Objective-C 项目的源文件中包含 math.h 吗?
【问题讨论】:
-
打电话给你的类型
Expr,不要再担心math.h -
同意@JimBalter(使用表达式)。此外,当编译器有符号名称长度限制时,我正在编码,由于符号名称长度有限,我们不得不担心名称冲突。然而,现在根本没有任何借口可以使用单词的一小部分作为符号。所以,我永远不会认为“exp”是表达式的合理类型。根据编码风格,有效的替代方案是:表达式、表达式_t、表达式,但可能只在命名空间内。如果没有命名空间,它们都应该加上一些合理的前缀:例如,XIXIXAO_Expression。
-
我很欣赏 cmets,但我知道我可以(并且确实)简单地重命名类型。我对解决方法感兴趣的原因是我们有一个非常好的命名约定(还有其他类型和函数名称绑定到这个
exp),这似乎违反了 Objective-C 直接编译 C99 代码的承诺.
标签: objective-c include