gcc或clang中消除特定警告的方法
2014-10-25 15:59
896 查看
一般在编译代码时会有相当多的警告信息,尤其当我们使用了-Wall选项的时候.-Wall绝不是像其字面意思一样打开所有警告.不过它打开的警告也相当多了.对于一些我们已知"无害"但仍然打印出来挤占可怜的控制台空间的警告,我们当然可以将其"屏蔽"掉.
就拿以下代码来说:
其会生成一个所谓的"三字符组符号"使用的警告,假设这正是我们需要的效果,所以我们可以忽略该警告.我们编译一下看看先(无论用gcc还是clang):
gcc:
clang:
不过在去掉-Wall警告后,可以发现没有任何警告,一切都安静了.但这不是我们想要的,因为可能放过一些真正隐含错误类的警告.大家可以看到警告提示中写明了该警告的类型:-Wtrigraphs.我们只要加上在W后面加上no即可屏蔽该警告,不过要放在Wall选项后面,如果放在前面,仍然会有警告哦.编译器应该是以最后一个"有效"选项为准呀!
就拿以下代码来说:
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <unistd.h> int main(void) { long double ld = 10000.2222L; puts("hello world!???(y/n)"); printf("long double type size is %lu %lu\n",sizeof(long double),sizeof ld); return 0; }
其会生成一个所谓的"三字符组符号"使用的警告,假设这正是我们需要的效果,所以我们可以忽略该警告.我们编译一下看看先(无论用gcc还是clang):
gcc:
wisy@wisy-ThinkPad-X61:~/src/c_src$ gcc -Wall -std=c11 -O3 -g0 -s -o x x.c x.c: In function ‘main’: x.c:9:21: warning: trigraph ??( converted to [ [-Wtrigraphs] puts("hello world!???(y/n)"); ^
clang:
wisy@wisy-ThinkPad-X61:~/src/c_src$ clang -Wall -std=c11 -O3 -g0 -s -o x x.c x.c:9:21: warning: trigraph converted to '[' character [-Wtrigraphs] puts("hello world!???(y/n)"); ^ 1 warning generated.
不过在去掉-Wall警告后,可以发现没有任何警告,一切都安静了.但这不是我们想要的,因为可能放过一些真正隐含错误类的警告.大家可以看到警告提示中写明了该警告的类型:-Wtrigraphs.我们只要加上在W后面加上no即可屏蔽该警告,不过要放在Wall选项后面,如果放在前面,仍然会有警告哦.编译器应该是以最后一个"有效"选项为准呀!
wisy@wisy-ThinkPad-X61:~/src/c_src$ gcc -Wall -Wno-trigraphs -std=c11 -O3 -g0 -s -o x x.c
相关文章推荐
- gcc或clang中消除特定警告的方法
- gcc或clang中消除特定警告的方法
- gcc, g++编译时消除特定警告的方法
- clang和gcc消除警告
- 【Hibernate】消除Hibernate3.x中query.list()方法的Type safety警告的方法
- iOS 警告收录及科学快速的消除方法
- Linux系统平台下关于GCC编译及使用的方法(-Werror,它要求GCC将所有的警告当成错误进行处理 )
- gcc g++编译时警告:"xxxx" 将随后被初始化_解决方法
- 警告信息 Nested weights are bad for performance 的消除方法
- iOS警告收录及科学快速的消除方法
- iOS 警告收录及科学快速的消除方法
- Altium Designer 消除Net has no driving source警告的方法
- warning C4996: 'sprintf' was declared deprecated see declaration of 'sprintf' 的警告消除方法
- iOS 警告收录及科学快速的消除方法
- iOS 警告收录及科学快速的消除方法
- iOS 警告收录及科学快速的消除方法---来源董铂然
- iOS里面消除使用代理调用方法时间警告问题
- Linux系统平台下关于GCC编译及使用的方法 (-Werror,它要求GCC将所有的警告当成错误进行处理
- Linux系统平台下关于GCC编译及使用的方法(-Werror,它要求GCC将所有的警告当成错误进行处理 )
- 一个消除引用类名产生警告的方法