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++的编译环境中,会直接给出错误,无法通过编译,必须显示转换。
原文地址:https://www.cnblogs.com/zfwxkd/p/11980044.html
时间: 2024-10-12 02:29:39