C++和C的结构等价性的不同

C++中,结构按名称等价,而C中,结构按布局相容性等价。

 1 struct A
 2 {
 3     int x,y;
 4 };
 5 
 6 struct B
 7 {
 8   int x,y;
 9 };
10 
11 int main()
12 {
13     struct A a;
14     struct B b;
15     struct A *pa = &a;
16     struct B *pb = &b;
17     pa = pb;
18     return 0;
19 }

该代码在纯C编译环境中,能顺利通过,一般会给出警告信息告知17行中的赋值中类型不兼容。

但是在C++的编译环境中,会直接给出错误,无法通过编译,必须显示转换。

猜你喜欢

转载自www.cnblogs.com/zfwxkd/p/11980044.html