原文地址:http://blog.youkuaiyun.com/a345017062/article/details/6457761
以前也分不清这这两者倒底有什么区别,动手测试了一下,明白了。
编译时
用g++,.c和.cpp文件都当作c++来编译。
用gcc,.c当c文件编译,.cpp当c++文件编译。
如果test.c中使用的是c++语法,只能用g++编译。
只有源码是.c,且用gcc编译时,才会有__cplusplus宏定义。
链接时
gcc链接的话,不能自动链接c++库,需要手工添加-lstdc++
gcc -lstdc++ test.cpp -o test
象下面这样,可以编译但链接不了。
gcc -c test.cpp -o test.o
gcc test.cpp -o test
关于extern,两者一样,都是按C方式处理
g++和gcc内部使用的程序是一样的,只不过根据文件扩展名当作c还是c++来处理这一点不同。再就是gcc链接是不能链接libstdc++库