一般在编译代码时会有相当多的警告信息,尤其当我们使用了-Wall选项的时候.-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中消除特定警告的方法的更多相关文章

  1. OSG中找到特定节点的方法

    OSG中找到特定节点的方法 转自:http://38288890.blog.163.com/blog/static/19612845320072721549504/ 为了在OSG中找到需要的节点并对节 ...

  2. OSG中找到特定节点的方法(转)

    OSG中找到特定节点的方法 为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程 [download id="14"] 阐述 ...

  3. msvc/gcc:中用#pragma指令关闭特定警告(warning)

    在使用一些第三方库或源码的时候,经常会遇到编译时产生warnings情况,这些warning不是我们自己的代码产生的,当然也不好去修改,但每次编译都显示一大堆与自己代码无关的警告也着实看着不爽,更麻烦 ...

  4. 去掉 Idea 中注入 Mapper 警告的方法

    使用 Idea 的时候,自动装配 Mybatis 的 mapper.会一直出现红色波浪线的警告.看着难受.下面提供几种方式 方式一 为 @Autowired 注解设置required = false ...

  5. 编写合格的C代码(1):通过编译选项将特定警告视为错误

    目录 快速设定 向错误的执念开炮,向C编译器开炮 编译警告应当被忽略吗?warning不重要吗? 个人总结的应当视作error的warning 1. 函数没有声明就使用 2. 函数虽然有声明,但是声明 ...

  6. 转载iOS开发中常见的警告及错误

    iOS警告收录及科学快速的消除方法     前言:现在你维护的项目有多少警告?看着几百条警告觉得心里烦么?你真的觉得警告又不是错误可以完全不管么? 如果你也被这些问题困惑,可以和我一起进行下面的操作. ...

  7. iOS 消除Xcode警告

    - undeclared selector #pragma clang diagnostic push #pragma clang diagnostic ignored"-Wundeclar ...

  8. mysql中,ENCODE警告---Warning Code : 1287

    mysql中,ENCODE警告 共 1 行受到影响, 1 个警告 执行耗时 : 0.072 sec传送时间 : 0.001 sec总耗时 : 0.073 sec Warning Code : 1287 ...

  9. VS禁止特定警告

    项目右键-属性-配置属性-C/C++-高级-禁用特定警告-填写警告编号例如4996

随机推荐

  1. JAVA之旅(三十三)——TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录

    JAVA之旅(三十三)--TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录 我们继续网络编程 一.TCP 说完UDP,我们就来说下我们应该重点掌握的TCP了 TCP传输 Soc ...

  2. Android水印相机

    本篇文章实现的水印相机,类似于qq空间中的水印相机功能,因之前看过一个demo上实现了一个简陋的水印相机功能,觉得挺有意思,就在此基础上进行了修改,优化和完善,并增加了部分功能,使之更接近于qq水印相 ...

  3. UILabel设定行间距方法

    NSString *textStr = @"iPhone规定:任何应用想访问麦克风,必须被授权麦克风服务.请进入"设置"->"隐私"->& ...

  4. java操作xml文件--修改节点

          上一篇文章我介绍了SAX方法解析XML文件的过程,这篇文章讲解的内容是利用DOM方法修改XML文件的节点内容.       下面依然是首先贴出XML文件: <?xml version ...

  5. C语言省略extern的缺陷

    在一个文件中(比如a.c)定义一个全局变量int a = 10; 然后在另一个代码文件(比如main.c)中需要使用变量a,可以写 int a; 单独看main.c文件时就会出现二义性,一个含义是当其 ...

  6. SIMPLE_DEV_PM_OPS宏

    SYSTEM_SLEEP_PM_OPS和dev_pm_ops的定义: [cpp] view plain copy #define SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, ...

  7. Cocoa触发方法调用的几种方法

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 1.SEL触发 SEL就是selector的缩写,它表示Cocoa中的方法选择器,不明白?那请仔细了解Objecti ...

  8. Uva - 512 - Spreadsheet Tracking

    Data in spreadsheets are stored in cells, which are organized in rows (r) and columns (c). Some oper ...

  9. 02Framelayout:帧布局

    Framelayout:帧布局        >概念:每个组件都是一帧   当前子组件会覆盖前一个组件     >属性:       android:layout_gravity=&quo ...

  10. matlab中 mcc/mbuild/mex 区别

    mcc 的作用是将 .m文件编译为 c/c++动态链接库文件,使你可以在 c/c++程序中使用 matlab的一些函数功能.mcc 也可以将.m文件编译为exe可执行文件. mex 的作用是将 c/c ...