先假设1.c只有C语言语法,不涉及C++语法,我们利用-E/-S指令对比二者编译过程中的差异。
Based on gcc 11.4.0 and g++ 11.4.0.
#include <stdio.h>
int main()
{
short a = 100;
printf("%d", a);
return 1;
}
- 预处理:差异在头文件包含,g++默认多定义__cplusplus和_GNU_SOURCE,头文件的函数声明会多extern "C"标志,另外打开了GNU更多features.
详细参见:gcc 1.c和g++ 1.c预处理有什么区别? - 编译/汇编/链接:均无差异,参见:gcc 1.c和g++ 1.c编译阶段有什么区别?