Berkley套接字,打破别名规则?

dhe*_*ein 4 c sockets gcc strict-aliasing

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

bind(sdListen, (struct sockaddr*)&sockaddr_inIdentifier, sizeof(sockaddr_inIdentifier))
Run Code Online (Sandbox Code Playgroud)

据我所知,这行代码打破了严格的别名规则(并且gcc给了我相同的警告).那么是否有一个计划b,在O3模式下使用套接字而不转向严格的数据?当然没有违反规定?或者我是否必须运行一个可以在所有系统/编译器上运行的套接字系统?

caf*_*caf 5

该行中的强制转换本身不会破坏严格的别名规则.如果bind()指针的解除引用没有将其转换回正确的类型,则该规则只会被破坏.

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