XCode包括系统文件而不是本地文件

时间:2015-02-12 17:38:22

标签: c++ ios xcode compilation header-files

我正在开发一个iOS项目,并使用

在我的一个文件中加入ifaddrs.h
#include <ifaddrs.h>

最近,我的代码停止了工作(特别是getifaddrs),我注意到BLWebSocketsServer提供getifaddrs.h/.c,这似乎会导致问题。如果我从XCodes“Headers”和“Compile Sources”阶段删除这两个文件,我的代码将重新开始工作。

现在,我的问题:

  1. 为什么会这样? getifaddrs.h不是<ifaddrs.h>,所以这不应该影响我的代码,是吗?

  2. 有没有办法在不改变BLWebSocketsServer的情况下解决这个问题?

  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

在BLWebSocketsServer中查看getifaddrs.[hc],他们正在重新定义getifaddrs,因此系统实现被覆盖(#include基本上无关紧要)

看起来您可以通过在编译器命令行(或Xcode项目设置中的选项)中定义HAVE_GETIFADDRS = 1来解决这个问题。

定义HAVE_GETIFADDRS在某种程度上等同于从编译阶段删除文件,但具有额外的好处,即BLWebSocketsServer中的其他源不会使用与getifaddrs相关的调用和结构的无效声明。