私は最近、CおよびC++言語標準が「厳密なエイリアシング」ルールを持っていることに驚きました。本質的に、このルールは、異なるタイプの変数が同じメモリ位置を参照することを禁じている。一例として、Visual C++は "厳密なエイリアシング"をサポートしていますか?
:
char buffer[4] = { 0x55, 0x66, 0x77, 0x88 };
int32 *p = (int32*)&buffer[0]; // illegal because buffer[0] and *p are different types
は、私はと対話プロC++開発者のほとんどは、このルールに精通していません。私の研究に基づいて、それは主にGCC/G ++/CLANGユーザーに影響を与えるようです。 Visual C++ではこのルールの有効化/無効化がサポートされていますか?もしそうなら、どうやってそうするのですか?
ありがとう
AFAIK MSVCは常にノーマルエイリアスを設定しているかのように動作します –
1-800サポート電話機数。そうではありません。 –
lol @ 1-800サポート番号: – digitale