GCC忽略任何不需要预处理的输入文件。 -dM 告诉预处理器输出有效的宏定义列表(预处理结束时仍然有效的宏定义)。该选项需结合`-E'选项使用。 2、打开用户自行设置的宏定义 gcc-DDEBUG helloworld.c helloworld.c文件中的宏定义DEBUG如下: #ifdef DEBUG printf("DEBUG is defined !");#elseprintf("DEBUG is not...
GCC编译器支持对代码进行诊断,针对代码本身不是错误但是疑似错误或者可能存在风险的地方发出警告,而警告编译选项就是用于控制需要告警的警告类型的。 一般启用特定类型警告的格式为-Wxxx,而排除特定类型的警告的格式则一般为-Wno-xxx。 1 -Wall 这是一个非常常用的编译选项,用于启用一批比较常见且易于修改的警告,这些...
-static-libstdc++: 如果没有这个选项,则默认使用libstdc++共享库,而这个选项可以指定使用libstdc++静态库 -Wa,option: 此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序 -Wl,option: 此选项传递option给链接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会...
某些选项(如-Wall和-Wextra )会打开其他选项,例如-Wunused ,这可能会启用其他选项,例如-Wunused-value 。 -Wall 该选项相当于同时使用了下列所有的选项: ◆unused-function:遇到仅声明过但尚未定义的静态函数时发出警告。 ◆unused-label:遇到声明过但不使用的标号的警告。 ◆unused-parameter:从未用过的函数参数的...
mcmodel选项就是做这个事情的。这个选项的本意是告诉编译器,你可以假设我的代码里面所有的符号的位置都在某个位宽的范围之内。比如-mcmodel=small,就是假设所有符号都在4GB范围内,32个bit的位宽就可以寻到符号的位置,那我们就用ADRP指令就可以了。 但是假设不成立的时候,比如上面的情况,ADRP指令就不行了,需要用位宽...
生成 -Wall 选项不包括的警告 尽管 gcc 编译器的 -Wall选项涵盖了绝大多数警告标记,依然有一些警告不能生成。为了生成它们,请使用 -Wextra选项。比如,下面的代码:#include <stdio.h>#include <stdlib.h>int main(){ int i=0; /* ... some code here ... */ if(i); return...
gcc选项-g与-rdynamic的异同 gcc的-g,应该没有人不知道它是一个调试选项,因此在一般需要进行程序调试的场景下,我们都会加上该选项,并且根据调试工具的不同,还能直接选择更有针对性的说明,比如-ggdb。-g是一个编译选项,即在源代码编译的过程中起作用,让gcc把更多调试信息(也就包括符号信息)收集起来并将存放到...
但是如果同时使用-Wextra 选项来进行编译:gcc -Wall -Wextra test.c -o test 会生成下面这样一个警告: 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 ...
gcc 是 GCC 编译器的通用编译指令,因为根据程序文件的后缀名,gcc 指令可以自行判断出当前程序所用编程语言的类别。gcc 指令也为用户提供了“手动指定代表编译方式”的接口,即使用 -x 选项 xxx.c:默认以编译 C 语言程序的方式编译此文件; xxx.cpp:默认以编译 C++ 程序的方式编译此文件。
分享几个命令,当我们在看一些开源项目,被里面的很多错综复杂的宏包裹,于是想看下这些定义是怎么被定义的,于是用到了一些命令,很是实用,这节整理下来,分享给大家。 今日讲解两个命令 gcc -dM -E - < /dev/null echo "" | gcc - -E -v 我们知道,GCC版本是非常多,每一版更新出来,都会加入一些新的功能,...