在结构中,"s"代表什么意思?

14

这是一个简单的问题。sin_family、sin_port、sin_addr和sin_zero中前面的字母 "s" 有什么意义呢?

struct sockaddr_in {
    short int          sin_family;  // Address family, AF_INET
    unsigned short int sin_port;    // Port number
    struct in_addr     sin_addr;    // Internet address
    unsigned char      sin_zero[8]; // Same size as struct sockaddr
};

感谢。


2
可能是为了 sockaddr - Benoit
3个回答

34

这段内容来自伯克利,当时LSD还是合法的。他们在命名选择上非常明显 :/

开个玩笑,这可以追溯到早期的K&R C语言,其中结构成员没有自己的命名空间。这要求你为结构成员想出不会与全局命名空间中的标识符冲突的独特名称。很痛苦。在结构名称的缩写前面加上前缀是常见的方法。

因此,“sockaddr_in”变成了“sin”。

请注意,枚举类型现在仍然存在这个问题,通常也是用相同的方式解决。


谢谢,这很有说服力。顺便问一下,LSD是什么? - smwikipedia
8
一种合成药物,能够实现持续无动力飞行。http://en.wikipedia.org/wiki/Lsd - Hans Passant
2
谢谢大家,现在我知道太多了。 :) - smwikipedia

7

sinsockaddr_in 结构体的重复名称,即套接字(Socket)因特网(Internet)。


5
在这个上下文中,“sin”代表“Socket INternet”。

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