![]() |
1
10
一般来说,不要 曾经 用不同的编译器编译你的C++程序的部分。 对于符号管理阶段,不同的编译器可能会使用不同的管理模式,而且通常也会使用不同的管理模式,因此单独编译的内容之间的链接不太可能工作。 见医生关于管理 name_mangling |
![]() |
2
3
对象布局(vtable指针位置、vtable格式、子对象放置等)不保证编译器之间的布局相同。 |
![]() |
3
2
不仅仅是课程不能互相交流。头中声明但仅由其中一个编译器编译的裸函数对另一个编译器将不可见,因为名称有误。 此外,编译器编译的任何静态类/类的成员如果没有编译main(),将无法正确初始化,因为编译器的运行时将不会被执行。甚至像64位长的算术(在32位平台上)也可能由于运行库冲突而无法正确链接。 |
![]() |
4
2
作为上面阿卡茨文章的一个补充,您可能会发现其他问题,这些问题可能会阻止由不同编译器构建的编译单元共同工作的代码:
基本上,C++/C标准在任何事物上都不太具体,在编译器之间存在差异,因此混合了它们的范围。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |