libdnet的地址和朋友是什么

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

我正在尝试为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)->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