libdnet的地址和朋友是什么
我正在尝试为D编程创建一个包装器 语言。我遇到的问题是不知道 eth地址、ip地址和ip6地址的下划线类型 转换。最后一种神秘类型是sockaddr 我还对为什么有一个do-while循环总是错误感兴趣libdnet的地址和朋友是什么,d,D,我正在尝试为D编程创建一个包装器 语言。我遇到的问题是不知道 eth地址、ip地址和ip6地址的下划线类型 转换。最后一种神秘类型是sockaddr 我还对为什么有一个do-while循环总是错误感兴趣 #define addr_pack(addr, type, bits, data, len) do { \ (addr)->addr_type = type; \ (addr)->addr_bits = bits; \ memmove((addr)->a
#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是否需要执行宏中的代码?这是C预处理器的定义宏。末尾的这些反斜杠是因为它是跨越多行的一个定义。do while循环类似于while循环,但评估在结束时完成,允许它始终至少执行一次。在本例中,开发人员使用while循环作为一种黑客手段,允许将其代码放入自己的范围中 来自同一目录中的eth.h:
typedef struct eth_addr {
uint8_t data[ETH_ADDR_LEN];
} eth_addr_t;
ip.h:
ip6.h:
typedef struct ip6_addr {
uint8_t data[IP6_ADDR_LEN];
} ip6_addr_t;
honeyd-1.1.1/unused/WinSock.h:
/*
* Structure used by kernel to store most
* addresses.
*/
struct sockaddr {
u_short sa_family; /* address family */
char sa_data[14]; /* up to 14 bytes of direct address */
};
这是c预处理器的define宏。末尾的这些反斜杠是因为它是跨越多行的一个定义。do while循环类似于while循环,但评估在结束时完成,允许它始终至少执行一次。在本例中,开发人员使用while循环作为一种黑客手段,允许将其代码放入自己的范围中 来自同一目录中的eth.h:
typedef struct eth_addr {
uint8_t data[ETH_ADDR_LEN];
} eth_addr_t;
ip.h:
ip6.h:
typedef struct ip6_addr {
uint8_t data[IP6_ADDR_LEN];
} ip6_addr_t;
honeyd-1.1.1/unused/WinSock.h:
/*
* Structure used by kernel to store most
* addresses.
*/
struct sockaddr {
u_short sa_family; /* address family */
char sa_data[14]; /* up to 14 bytes of direct address */
};
你看了吗?它应该自动将.h文件转换为d声明 你看了吗?它应该自动将.h文件转换为d声明 谢谢,昨天花了很多时间使用grep和Google,只是不知道我在找什么。另外,我想我要找的sockaddr来自sys/socket.hThanks,昨天花了很多时间使用grep和Google,只是不知道我在找什么。另外,我认为我正在寻找的sockaddr来自sys/socket.h