来自 <netinet/in.h> 的 INADDR_LOOPBACK 宏未导入 swift
INADDR_LOOPBACK macro from <netinet/in.h> not imported in swift
我正在尝试使用没有文档的 peertalk 框架。
在他们的 obj-c 示例中,他们使用了 INADDR_LOOPBACK 宏,并且示例正在运行。
但是当我尝试在 swift 中做同样的事情时,系统抛出一个未解决的标识符错误。
有人知道如何解决吗?
http://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.html
来自 Apple 文档。
Declare simple macros as global constants, and translate complex
macros into functions.
Swift3 的更新: 从 Swift3 开始,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
。
这不太容易出错,因为您不必重复常量。
我正在尝试使用没有文档的 peertalk 框架。 在他们的 obj-c 示例中,他们使用了 INADDR_LOOPBACK 宏,并且示例正在运行。 但是当我尝试在 swift 中做同样的事情时,系统抛出一个未解决的标识符错误。 有人知道如何解决吗?
http://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.html
来自 Apple 文档。
Declare simple macros as global constants, and translate complex macros into functions.
Swift3 的更新: 从 Swift3 开始,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
。
这不太容易出错,因为您不必重复常量。