当我用g++ 4.7
.
g++ -Wall -fstrict-aliasing
我会在第一次演员表上收到警告:
warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
第二个演员很好,没有任何警告。谁能帮我理解为什么在第一次演员表上发出警告?
int main()
{
char a [16];
char * p = &a[0];
//int i = *((int *)(&a[0])); //bad
int j = *((int *)(p)); //ok
return 0;
}