我在一个示范项目文件iforce2d_topdown_car.h与包括防护件,像这样:具有重复的警告包括在Objective-C后卫C++头
#ifndef IFORCE2D_TOPDOWN_CAR_H
#define IFORCE2D_TOPDOWN_CAR_H
... source code ...
#endif
这被包括在HelloWorldLayer.h,这是然后包含在其他两个文件中(除iforce2d头之外,这些文件都是obj-c)。一切都编译好,但我得到的任何错误显示3次。这让我很烦恼,我不知道它是否是一个更大问题的症状。
这是预期的行为?在我看来,如果一个预处理器var被定义了,那么它将保持定义,下一次被包含它将不会被编译。看来情况并非如此,但我不知道为什么。
嗨尼古拉斯,谢谢你的回答。你已经澄清了一下发生了什么,但是我仍然对包含后卫如何避免编译多次的代码感到困惑。不应该只运行一次#define,然后接下来的两次它不应该被编译? – 2012-07-11 18:08:29
包含的守护程序在同一个翻译单元**中只保留一次**以上的代码。如果几个源文件包含相同的头文件,他们都需要获取它的内容。 – 2012-07-11 18:12:17
啊哈!感谢那!看起来这是不寻常的,因为原始编码器在标题内使用了代码。我会尽量不要用我自己的代码来做到这一点。 – 2012-07-11 18:24:27