-Wall -Wextra# 开启大部分警告和额外警告-Wpedantic# 对不符合ISO语言规范的发出警告-Werror# 视所有警告为错误, 不建议使用-Wshadow# 局部变量遮盖上一层的变量时报错-Wfatal-errors# 遇到第一个错误即停止-Wsign-compare# 有符号与无符号比较 被包含在-Wextra-Wconversion# 隐式转换可能导致值出现错误-Wno-unuse...
所以,在编译程序时带上-Werror选项,那么GCC会在所有产生警告的地方停止编译,迫使程序员对自己的代码进行修改,如下: gcc -Werror test.c -o test 5库文件连接 开发软件时,完全不使用第三方函数库的情况是比较少见的,通常来讲都需要借助许多函数库的支持才能够完成相应的功能。从程序员的角度看,函数库实际上就是...
以-g、-f、-m、-O、-W 或 --param 开头的选项将由 gcc.real 自动传递给其调用的 不同子进程。若要向这些进程传递其他选项,必须使用 -W<字母> 选项。
而-Wsequence-point选项恰恰可以帮我们这个忙,它可以帮我们查出这样的代码来,并给出其警告。 /** test_sequence_point.c * gcc -Wsequence-point test_sequence_point.c*/#include<stdio.h>intmain() {inti =12; i= i--; printf("the i is %d\n", i);return0; } gcc -Wsequence-point test_seq...
常用编译选项 GCc and g++分别是gnu的c & c++编译器 GCc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器eGCs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] ...
* gcc -Wcomment test_comment.c */ #i nclude int main() { int a = 1; int b = 2; int c = 0; // ok just test\ c = a + b; /* * 这里我们期待c = 3 * /* 但实际上输出c = 0 */ printf("the c is %d\n", c); ...
test.c: In function ‘main’:test.c:10:8: warning: suggest braces around empty body in an ‘if’ statement[-Wempty-body] if(i);从上面的警告清楚的看到,-Wextra 选项从内部启用了-Wempty-body 选项,从而可以检测可疑代码并生成警告。下面是这个选项启用的全部警告标记。-Wclobbered-Wempty-body-W...
[-Wcomment] 当/*出现在/*...*/注释中,或者\出现在//...注释结尾处时,使用-Wcomment 会给出警告。不要小觑这些马虎代码,它很可能会影响程序的运行结果。如下面的例子: e.g. /* *test_comment.c *gcc-Wcommenttest_comment.c */ #include ...
-Werror:该标志将警告视为错误,使编译器在遇到警告时停止编译过程。 4.预处理器Flag 预处理器标志负责处理源代码中以#开头的指令。这些标志定义宏并控制编译。 一些常用的预处理器标志包括: -D:该标志用于在编译过程中定义宏。例如,-DDEBUG可用于定义DEBUG宏,根据其是否存在启用条件编译。
常用编译选项 gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] ...