最主要的有两个方面,一个是C++ 的重复代码消除,还有一个就是全局构造与析构。...比如对于·个有虚函数的类来说,有一个与之相对应的虚函数表( Virtual Function Table,一般简称vtbl),编译器会在用到该类的多个编译单元生成虚函数表,造成代码重复;外部内联函数、默认构造函数...在main函数执行完成以后,返回到初始化部分,它进行一些清理工作,然后结束进程。...对于C语言的目标代码来说,以下几个方面会决定目标文件之间是否二进制兼容:
内置类型(如int、float、char等)的大小和在存储器中的放置方式(大小端、对齐方式);
组合类型(如 struct、 union...外部符号( external-linkage)与用户定义的符号之间的命名方式和解析方式,如函数名func在C语言的目标文件中是否被解析成外部符号func。