gcc与g++编译判断

结论

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

参考文章