XCode包含系统文件而不是本地文件
我正在开发一个iOS项目,并在其中一个文件中使用ifaddrs.h
#include <ifaddrs.h>
最近,我的代码停止工作(特别是getifaddrs
),我注意到BLWebSocketsServer提供了一个getifaddrs.h/.c
这似乎会导致问题。 如果我从XCodes“Headers”和“Compile Sources”阶段中删除这两个文件,我的代码将再次开始工作。
现在,对于我的问题:
-
为什么会这样呢?
getifaddrs.h
不是<ifaddrs.h>
,所以这不应该影响我的代码,应该吗? -
有没有办法解决这个问题,而不改变BLWebSocketsServer?
谢谢!
看getifaddrs.[hc]
,它们正在重新定义getifaddrs
,所以系统实现被覆盖(而#include基本上是不相关的)
看起来您可以通过在您的编译器命令行上(或在Xcode项目设置中的选项中)定义HAVE_GETIFADDRS = 1来解决这个问题,
定义HAVE_GETIFADDRS在某种程度上等同于从编译阶段中删除文件,但具有额外的好处,即BLWebSocketsServer中的其他源将不会使用getifaddrs相关的调用和结构的无效声明。