gcc是可以编译.c和.cpp的源文件,如果你的文件名的后缀是.c那么gcc是按照c语言的语法来编译的,如果你的文件后缀是.cpp,那么就会按照c++的语法编译,但是用gcc来编译.cpp文件,你直接编译时编译不过的,因为gcc它不会去链接c++的库,也就是说,有的东西这里根本找不到,所以用gcc编译.cpp文件时需要手动链接c++的库的,要在后面加-lstdc++,这样才能链接到c++的库完成编译。
g++也是可以编译.c和.cpp源文件的,g++是自动链接的c++的库,也就是说g++是既有c的库也有c++的库的,不需要你手动去链接其他的东西,但要明白一点,g++在编译文件的时候,不管你是.c文件还是.cpp文件,一律按照c++的语法去编译,c和c++的语法还是有差别的,有的程序,用c的语法是编译时可以通过的,用c++的就不行。
总的来说,编译程序的话.c文件还是用gcc来进行编译,.cpp文件的话还是用g++来进行编译的好。