dig*_*ale 7 strict-aliasing visual-c++
我最近惊讶地发现C和C++语言标准有一个"严格别名"规则.实质上,该规则禁止不同类型的变量引用相同的内存位置.
举个例子:
char buffer[4] = { 0x55, 0x66, 0x77, 0x88 };
int32 *p = (int32*)&buffer[0]; // illegal because buffer[0] and *p are different types
Run Code Online (Sandbox Code Playgroud)
我与之交互的大多数专业C++开发人员都不熟悉这条规则.根据我的研究,它似乎主要影响GCC/G ++/CLANG用户.Visual C++是否支持启用/禁用此规则?如果是这样,那么一个人怎么做?
谢谢