C - 前缀在UNIX网络编程中是什么意思?



当我读《Unix网络编程》一书时,有许多套接字API/类型具有前缀,例如带有sinsin_addrinetinet_addr,以及带有inin_addr_t。这些前缀实际上是什么意思,即全名是什么?

我相信在早期的结构成员必须是独一无二的。在两个不同的结构中对成员使用相同的名称失败。对于帮助使用 C 结构和预处理器宏的程序集宏,这仍然(并且始终如此(。

因此,过去的结构和常量使用通常派生自结构名称或上下文的前缀。 例如,struct addressinfo 使用前缀 ai,struct sockaddr 使用 sa,struct sockaddr_in 使用 sin 等等。

为每个成员使用唯一的名称允许对 C 和 asm 代码使用相同的名称,这使得两种语言的代码读取和编写更容易。切换语言时无需在精神上切换曲目。

最新更新