Что означает «с» в структуре? - PullRequest
14 голосов
/ 11 февраля 2011

Вот простой вопрос.Что означает начальная буква « s » в sin_family, sin_port, sin_addr и sin_zero?

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
};

Спасибо.

Ответы [ 3 ]

33 голосов
/ 11 февраля 2011

Это из Беркли, когда ЛСД был еще легален. Так что их выбор имен очевиден: /

Шутка в сторону, это восходит к очень раннему K & R C, где члены структуры не имели своего собственного пространства имен. Что потребовало от вас придумать разные имена для членов структуры, которые не будут конфликтовать с идентификаторами в глобальном пространстве имен. Болезненные. Префикс имен с сокращением названия структуры был обычным подходом.

Таким образом, «sockaddr_in» становится «грехом».

Обратите внимание, что перечисления все еще имеют эту проблему сегодня, нетипично решаемую таким же образом.

6 голосов
/ 11 февраля 2011

sin повторяет имя sockaddr_in структуры, т.е. S ocket IN ternet.

5 голосов
/ 11 февраля 2011

«sin» в данном контексте означает «Socket INternet».

...