其次,如果编译的是.cpp文件,gcc会自动按照.cpp的标准也就是c++的标准进行编译;如果编译的是.c文件,在没有涉及一些不规范语法的情况下,两者也是完全等价的,前面的-xc++可能因为使用c++的编译标准而不支持c语言一些语法,要求更严一些,但后面链接的其他库对没有使用c++库的代码是没有意义的。我们写一个demo1.c来作示范。 示例如下:
xxx.cpp:默认以编译 C++ 程序的方式编译此文件。 xxx.m:默认以编译 Objective-C 程序的方式编译此文件; xxx.go:默认以编译 Go 语言程序的方式编译此文件; g++ 指令,则无论目标文件的后缀名是什么,该指令都一律按照编译 C++ 代码的方式编译该文件。 gcc 命令的常用选项 注意:以 -g、-f、-m、-O、-W 或 ...
gcc可以判断出目标程序所使用编程语言的类别,会把xxx.c文件当作C语言编译,把xxx.cpp文件当作C++语言编译。而g++只把xxx.c和xxx.cpp一律都当作C++语言来编译。 在编译C++文件的时候,g++会自动链接一些标准库或基础库,而gcc不会。当正在编译的C++代码文件依赖STL标准库的时候,为了使用STL,gcc命令需要增加参数–lstdc...
gcc在编译.c文件时,可使用的预定义宏是比较少的,很多都是未定义的。 gcc在编译cpp文件时、g++在编译c文件和cpp文件时(这时候gcc和g++调用的都是cpp文件的编译器),会加入一些额外的宏,这些宏如下: #define__GXX_WEAK__ 1#define__cplusplus 1#define__DEPRECATED 1#define__GNUG__ 4#define__EXCEPTIONS 1...
gcc 与 g++ 分别是 gnu 的 C & C++编译器。gcc可以编译C语言程序, g++既可以编译C语言程序, 又可以编译C++程序, 因为在语法上C++兼容C语言。 gcc/g++ 在执行编译工作的时候,总共需要4步: 预处理,生成 .i 的文件[预处理器cpp] 将预处理后的文件转换成汇编语言, 生成文件 .s[编译器egcs] ...
也就是根据约定 C 语言的后缀名称是 .c 的,而 C++ 的后缀名是 .C 或者 .cpp, 如果你很个性,决定你的 C 代码文件的后缀名是 .pig 哈哈,那你就要用这个参数, 这个参数对他后面的文件名都起作用,除非到了下一个参数的使用。 可以使用的参数吗有下面的这些:'c', 'objective-c', 'c-header', 'c++'...
gcc将.c的文件当作C程序,将.cpp的文件当作C++程序 g++将.c和.cpp的文件都当成C++程序 链接方式:gcc不会自动链接C++的库(比如 STL 标准库),而g++会自动链接C++库 预处理器宏:g++会自动添加一些预处理器宏,比如 __cplusplus,但是gcc不会; gcc是GCC编译器的通用编译指令,根据文件的后缀名gcc指令可以自行判断出...
gcc可以判断出目标程序所使用编程语言的类别,会把xxx.c文件当作C语言编译,把xxx.cpp文件当作C++语言编译。而g++只把xxx.c和xxx.cpp一律都当作C++语言来编译。 在编译C++文件的时候,g++会自动链接一些标准库或基础库,而gcc不会。当正在编译的C++代码文件依赖STL标准库的时候,为了使用STL,gcc命令需要增加参数–lstdc...
1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] [参数详解] -x language filename 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根 ...
hello.cpp:11:9: warning: unused variable ‘f’ [-Wunused-variable] int f = 0; ^~~~ hello.cpp:12:9: warning: unused variable ‘g’ [-Wunused-variable] int g = 0; ^~~~ hello.cpp:13:9: warning: unused variable ‘h’ [-Wunused-variable] ...