我在哪里可以下载sys/types.h、sys/socket.h、netinet/in.h、arpa/inet.h和sockaddr?

4

我在哪里可以下载以下头文件以供Dev C使用?

sys/types.h
sys/socket.h
netinet/in.h
arpa/inet.h

还有结构

sockadder及其衍生物?


1
哪种实现?Linux、MSVC、FreeBSD和Solaris都有它们自己的版本... - thkala
看起来你正在学习Unix套接字编程。如果我没记错的话,这些是Berkeley套接字的一部分。不知道你会在哪里找到它们。在Linux中,应该是某个软件包的一部分。对于Windows我没有任何想法。 - Madhur Ahuja
如果您使用的是*nix机器,它们可能位于/usr/include/下。 - nategoose
5个回答

5
我不知道为什么你需要下载这些特定的文件,因为它们应该在大多数现代系统中随附于你的编译器套件中。
你还需要记住,它们可能会根据你的平台而有很大的不同,并且这些文件经常包含其他非标准文件(这些文件还会包含其他文件,以此类推)。这可能使这些文件非常难以解析和理解。
话虽如此,从某个不确定的Linux版本开始:

http://linux.die.net/include/sys/types.h

http://linux.die.net/include/sys/socket.h

http://linux.die.net/include/netinet/in.h

http://linux.die.net/include/arpa/inet.h

如果您要替换丢失的文件,请考虑获取/重新安装适当的编译器套件和任何缺少的开发者包。
如果您想查看结构定义,应该查看文档而不是实际实现。这样,您可以避免将代码绑定到私有定义等在系统之间可能会更改的内容。
编辑:
只是为了确认我上面的一些评论,Linux 版本的 struct sockaddr 在以下位置逐个定义:

http://linux.die.net/include/bits/socket.h

http://linux.die.net/include/bits/sockaddr.h


1
你正在使用哪个SDK?对于Linux,这些文件是作为核心C SDK的一部分提供的。对于Windows,它也随SDK一起提供。如果你只想快速查看一些头文件,可以使用http://www.google.com/codesearch

0

那些头文件(不是头文件)是实现的一部分。它们不需要是真实的文件。

如果你的实现没有提供它们,那就没办法了。

如果你的实现将它们作为真实文件提供,并且你删除了它们,重新安装编译器可能会起作用。

如果你的实现将它们作为真实文件提供,并且你无法重新安装编译器,你的方法可能有效。抱歉,我不知道在哪里下载这些文件,或者为什么有人首先要复制这些文件到其他地方。


“头文件”是完全可以的。http://www.googlefight.com/index.php?lang=en_GB&word1=%22C+Headers%22&word2=%22C+Header+Files%22 - 你所说的“它们不需要是真实的文件”是什么意思? - Roddy
2
@Roddy:那个Googlefight的东西没有任何意义。请查看C标准6.4.7(http://www.open-std.org/JTC1/sc22/wg14/www/standards)---PDF(http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf) - pmg
2
“headers”放在<>之间;“header files”放在""之间。“headers”由实现提供;“header files”由程序员提供。“headers”可以是二进制编译器的一部分,或者它们的信息可以被编译器知道而不需要其他支持。 - pmg
谢谢您的解释,我现在明白了区别。然而,他列出的文件并没有被描述为“标准”头文件,所以它们同样可以是头文件?还有,在任何真实世界的实现中,是否存在头文件不是真正的文件的情况? - Roddy
@Roddy:你说得对。我看到了sys/socket.h,立刻想到了周围的<>。如果它们是普通的头文件,它们应该能够在每个编译器系统上下载和使用(带有相应的实现文件)。但是,为什么有人只要求头文件呢?他们需要头文件和代码文件。 - pmg

0
我假设你正在尝试在另一个平台(如Windows)下编译*nix平台的源代码。这种方法行不通。请记住,您需要那些头文件的库,它们是不可移植的。
在您的计算机上安装Ubuntu虚拟机以进行此类开发。

-1
do:
apt-get install gcc-4.2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接