我正在尝试为 D 编程语言创建一个围绕libdnet的包装器。我遇到的问题是在转换addr.h时不知道 eth_addr_t、ip_addr_t 和 ip6_addr_t 的下划线类型是什么。最后一个神秘类型是 sockaddr
而且我也对为什么会有一个总是错误的 do while 循环感兴趣。
#define addr_pack(addr, type, bits, data, len) do { \
(addr)->addr_type = type; \
(addr)->addr_bits = bits; \
memmove((addr)->addr_data8, (char *)data, len); \
} while (0)
C是否需要执行宏中的代码?