4

我正在遵循Beej 的网络编程指南,并且我正在使用 VC++ 2010,但是当我将结构复制粘贴到我的程序中时,某些类型会出现不正确的标识符。例如:

u_int32_t就这样出现了,经过一番搜索,我发现这些是大约 1999 年 C 语言中的旧类型。我本可以只包含stdint.h,但这需要我记住它们的含义。相反,我使用了标准int的 32 位长(4 字节),而对于其他 64 位长(8 字节)的标准,我使用了long long int.

无论如何,我正在缩小到我的最后一个语法错误,它说sa_family_t是一个无效的标识符。我不知道它应该是什么,搜索也没有任何结果。那是我的问题,我不知道我应该为此指定什么类型标识符。

另一件困扰我的事情是: char __ss_pad1[_SS_PAD1SIZE];SS_PAD1SIZE件事也以红色显示为无效。

4

1 回答 1

8

sa_family_t 应该是一个无符号整数。 Windows 头文件不符合该标准。Winsock.h 定义 sockaddr 结构如下:

struct sockaddr {
        u_short sa_family;              /* address family */
        char    sa_data[14];            /* up to 14 bytes of direct address */
};

所以要编译你的代码,你需要自己 typedef sa_family_t。

于 2012-08-12T17:21:03.027 回答