Recentemente sono stato sorpreso di apprendere che gli standard di linguaggio C e C++ hanno una regola di "aliasing rigoroso". In sostanza, la regola proibisce alle variabili di tipi diversi di fare riferimento alla stessa posizione di memoria.Visual C++ supporta "aliasing rigoroso"?
Per fare un esempio:
char buffer[4] = { 0x55, 0x66, 0x77, 0x88 };
int32 *p = (int32*)&buffer[0]; // illegal because buffer[0] and *p are different types
La maggior parte degli sviluppatori professionisti C++ con cui interagisco non hanno familiarità con questa regola. Sulla base della mia ricerca, sembra interessare principalmente gli utenti GCC/G ++/CLANG. Visual C++ supporta l'abilitazione/disabilitazione di questa regola? Se è così, come si fa?
Grazie
AFAIK MSVC si comporta sempre come se si impostasse il no-strict-aliasing –
È un compilatore con un telefono di supporto 1-800 numero. Quindi no. –
lol @ con un numero di supporto 1-800 :) – digitale