Сокеты Беркли, нарушающие правила наложения имен?

Я спрашиваю себя, могу ли я использовать сокеты BSD со строгим псевдонимом, не получая неопределенного поведения при компиляции с gcc?

bind(sdListen, (struct sockaddr*)&sockaddr_inIdentifier, sizeof(sockaddr_inIdentifier))

Насколько я знаю, эта строка кода нарушает строгое правило псевдонимов (и gcc выдает мне то же предупреждение). Так есть ли план использования розеток в режиме O3 без включения стриктализации? И конечно не нарушая правила? или я должен получить собственную работающую систему сокетов, которая будет работать на всех системах / компиляторах?

1 ответ

Решение

Сам актерский состав в этой линии не нарушает строгое правило наложения имен. Правило нарушается только в том случае, если реализация bind() разыменовывает этот указатель без преобразования его обратно в правильный тип.

Любые строгие проблемы с псевдонимами есть проблемы для исполнителя bind(), а не пользователь.

Другие вопросы по тегам