我试图使用没有文档的peertalk框架。 在他们的obj-c示例中,他们使用INADDR_LOOPBACK宏,并且示例正在运行。 但是当我尝试在swift中做同样的事情时,系统会给我一个未解决的标识符错误。 任何人都知道如何解决它?
http://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.html
答案 0 :(得分:7)
Swift 3更新:自Swift 3起,INADDR_LOOPBACK
被导入Swift。因此,添加
#include <netinet/in.h>
到桥接头文件,但自定义定义不是 需要了。
旧答案:由于某种原因,宏定义
#define INADDR_LOOPBACK (u_int32_t)0x7f000001
来自<netinet/in.h>
的是而不是导入到Swift中。
问题可能是(u_int32_t)
演员,因为
其他宏如
#define INADDR_NONE 0xffffffff /* -1 return */
已导入。
一种解决方案是定义
let INADDR_LOOPBACK = UInt32(0x7f000001)
在你的Swift代码中。 或者,添加
#include <netinet/in.h>
const uint32_t kInAddrLoopback = INADDR_LOOPBACK;
到桥接头文件并在Swift代码中使用kInAddrLoopback
。
这不容易出错,因为您不必重复常量。
答案 1 :(得分:0)
来自Apple文档。
将简单宏声明为全局常量,并转换复数 宏转换为函数。