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