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

我正在开发一个iOS项目,并在其中一个文件中使用ifaddrs.h

 #include <ifaddrs.h> 

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

现在,对于我的问题:

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

  2. 有没有办法解决这个问题,而不改变BLWebSocketsServer?

谢谢!

getifaddrs.[hc] ,它们正在重新定义getifaddrs ,所以系统实现被覆盖(而#include基本上是不相关的)

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

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