5

我问我自己,我可以使用具有严格别名的 BSD 套接字,而不会通过使用 gcc 编译得到未定义的行为吗?

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

据我所知,这行代码打破了严格的别名规则(并且 gcc 给了我同样的警告)。那么是否有一个计划 b,在 O3 模式下使用套接字而不进行严格混叠?当然,在不违反规则的情况下?还是我必须运行一个可以在所有系统/编译器上运行的自己的套接字系统?

4

1 回答 1

5

该行中的演员表本身不会破坏严格的别名规则。bind()仅当取消引用该指针而不将其转换回正确的类型时,该规则才被打破。

任何严格的别名问题都存在于 的实现者而bind()不是用户的问题。

于 2013-08-01T08:19:03.860 回答