结论
1. 看代码文件后缀,如果是以.cpp为后缀,即便使用的是gcc,实际编译的也是g++ 2. 使用了g++那必定是走g++编译的 3. gcc a.c ,即以.c为后缀,才会走gcc编译 4. gcc a.cpp会走部分C++才有的东西,但无法完全替代g++,即g++还其他的功能
测试代码
#include <stdio.h>
int main (int argc, char** argv)
{
printf("%ld\n",sizeof('a'));//字符常量gcc中占4个字节,g++中占1个字节
char b = 'a';
printf("%ld\n",sizeof(b));//字符变量都是一个字节
//预编译判断
#ifdef __cplusplus//g++有此宏定义,gcc没有
printf("g++\n");
#else
printf("gcc\n");
#endif
return 0;
}
g++ .cpp
$ g++ c01.cpp $ ./a.out 1 1 g++
gcc .cpp
$ gcc c01.cpp $ ./a.out 1 1 g++
gcc .c
$ cp c01.cpp b.c $ gcc b.c $ ./a.out 4 1 gcc
g++ .c
$ g++ b.c $ ./a.out 1 1 g++