GCC和G++是我们在学习C/C++并且进行编译的过程中,必会的知识点,今天小雷雷针对这个聊几句,嗯哼哼~
gcc和g++都是C/C++的编译器,但是它们之间存在一些区别
GCC和G++的渊源
GCC(GNU Compiler Collection)
是一个通用的C/C++编译器,可以用于编译C和C++代码。而G++是GCC的一个组件,专门用于编译C++代码,它是GCC的一个变种,针对C++语言特性进行了优化。
例如我们使用vscode进行代码的编译运行,必须要配置一个文件c_cpp_properties.json
,该文件主要是指定编译器的类型和头文件搜索路径等。
❤️ 在c_cpp_properties.json
文件中,“compilerPath"属性用于指定C/C++编译器的路径。如果你将"compilerPath"设置为”/usr/bin/gcc
",那么将会使用GCC编译器来编译你的C/C++代码。而如果你将"compilerPath"设置为"/usr/bin/g++
",那么将会使用G++编译器来编译你的C++代码。
因此,如果你的项目同时包含C和C++代码,并且希望使用GCC来编译所有的代码,可以将"compilerPath"设置为"/usr/bin/gcc"。而如果你的项目只包含C++代码,并且希望使用专门针对C++进行优化的编译器,可以将"compilerPath"设置为"/usr/bin/g++"。
需要注意的是,具体的编译器路径可能会因操作系统和安装方式而有所不同。上述路径是在一些常见的Linux系统上的默认路径,实际使用时请根据你的操作系统和安装方式进行相应的调整。
GCC和G++的区别
文件后缀关联:对于文件后缀为.c的源文件,gcc会将其视为C程序,而g++会将其视为C++程序。对于文件后缀为.cpp的源文件,两者都会将其视为C++程序。
编译阶段:g++会自动调用gcc进行编译,因此两者在编译阶段是等价的。但是,gcc命令不能自动与C++程序使用的库进行链接,因此通常使用g++来完成链接。
链接库:由于gcc不能自动与C++程序使用的库进行链接,所以使用g++链接库时需要加上对C++库的链接命令,如-lstdc++。
函数命名约定:extern "C"是一种函数命名约定,用于指示编译器按照C语言的语法和规则编译函数。这是为了在C++中使用C函数或者库时,能够正确地链接和调用。
总之,gcc和g++的主要区别在于文件后缀关联、编译阶段、链接库和函数命名约定等方面。在编译C/C++代码时,可以根据需要选择使用gcc或g++。