结论
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++