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