首先, #pragma 本质上也是声明,一般常用的功能就是打注释、尤其是分段注释

但是#pragma 另外一个强大的功能就是处理编译器警告,用的时候可能就没上一个

功能用的那么多,在代码中处理警告却是极其高效的方法。

其中 clang diagnostic 便是#pragma 第一个功能常用的命令,步骤如下

?
1
2
3
4
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-相关命令"
    // 你自己的代码
#pragma clang diagnostic pop

常见用法

1.方法弃用告警

?
1
2
3
4
5
6
#pragma clang diagnostic push 
   
#pragma clang diagnostic ignored "-Wdeprecated-declarations"      
[TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]]; 
   
#pragma clang diagnostic pop

2.不兼容指针类型

?
1
2
3
4
#pragma clang diagnostic push  
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"  
// 
#pragma clang diagnostic pop

3.循环引用

?
1
2
3
4
5
6
7
// completionBlock is manually nilled out in AFURLConnectionOperation to break the retain cycle. 
#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Warc-retain-cycles" 
    self.completionBlock = ^ { 
        ... 
    }; 
#pragma clang diagnostic pop

4.未使用变量

?
1
2
3
4
#pragma clang diagnostic push  
#pragma clang diagnostic ignored "-Wunused-variable"  
  int a;  
#pragma clang diagnostic pop


#pargma 用法详情:

http://nshipster.cn/pragma/

http://nshipster.com/clang-diagnostics/

相关的命令列表

http://fuckingclangwarnings.com/


进阶:http://clang.llvm.org/docs/UsersManual.html#diagnostics_pragmas

#pragma clang diagnostic相关推荐

  1. [IOS]clang diagnostic、Wprotocol ..

    2019独角兽企业重金招聘Python工程师标准>>> 首先, #pragma 本质上也是声明,一般常用的功能就是打注释.尤其是分段注释 但是#pragma 另外一个强大的功能就是处 ...

  2. clang diagnostic用例

    clang命令格式大致如下: #pragma clang diagnostic push #pragma clang diagnostic ignored "-相关命令"//需要操 ...

  3. linux c 编译器处理警告、错误 #pragma GCC diagnostic ignored -Wunused

    各个层次的gcc警告 从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attribute__ ((unused)); 指定该变量为"未使用的".即使这个变量没有被使 ...

  4. 聊聊 #pragma 和 // MARK:

    我去,就这两个东西还要讲?是OC或Swift开发人员都知道是怎么回事好吗?不就是用来标记和分组代码的吗?难道还有别的装逼技能? 当然,其实问大部分人说这两个是什么作用,或者是除了这两个还知道什么的情况 ...

  5. 深入剖析 iOS 编译 Clang LLVM(编译流程)

    2019独角兽企业重金招聘Python工程师标准>>> 前言 iOS 开发中 Objective-C 和 Swift 都用的是 Clang / LLVM 来编译的.LLVM是一个模块 ...

  6. iOS编程 手动忽略clang编译器警告

    iOS编程 手动忽略clang编译器警告 在iOS开发过程中, 我们可能会碰到一些系统方法弃用, weak.循环引用.不能运行之类的警告. 有代码洁癖的孩子们非常想消除他们, 今天就让我们来一次Fuc ...

  7. 深入剖析 iOS 编译 Clang / LLVM

    前言 2000年,伊利诺伊大学厄巴纳-香槟分校(University of Illinois at Urbana-Champaign 简称UIUC)这所享有世界声望的一流公立研究型大学的 Chris ...

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

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

  9. xcode 消除警告

    项目中引用大量的第三方代码时,这些代码很复杂,不要轻易去改动它,如果编译产生很多警告,该如何消除呢? 1. 最直接.最一劳永逸.最安全的方式,直接找到警告的那段代码,改为不警告.这个方式最安全. 可是 ...

最新文章

  1. H3C——BGP联盟配置
  2. snort inline模式和passive模式区别
  3. 前后端分离之Vue(三)爬过得那些坑
  4. linux 进程地址空间的一步步探究
  5. 新工具上线!只需2步助你轻松学爬虫!
  6. 深入浅出WPF之Binding的使用(一)
  7. Spring配置项context:annotation-config/解释说明
  8. mtk android工具包,MTK Android software Tools工具的说明
  9. Linux之time命令
  10. excel mmult matlab,如何用excle计算矩阵/在EXCEL中如何计算矩阵行列式
  11. 第五模块 常用邮件沟通场景(1):求职信
  12. Android 应用程序无响应(ANR)报错原因
  13. Excel中对合并单元格后不同行数对应数据处理的三种特技
  14. 一个小妙招能让你在服装上省下好多rmb
  15. 教你制作漂亮的Word项目符号。
  16. python怎么转义_python怎么转义
  17. UID、PID、PPID是什么?
  18. 关于sql连接语句中的Integrated Security=SSPI
  19. mercury MW300R(mt7620n)GPIO研究
  20. 应用交付为什么会受到用户青睐

热门文章

  1. 整理:JavaScript 各种转型函数与类型转换细节
  2. 腾讯重新定义了区块链,这下整个链圈都沸腾了!
  3. 递归算法之蜜蜂路线问题
  4. IDEA在一个窗口创建多个项目
  5. 微信小程序学习和实践总结
  6. java取拼音首字母
  7. Debian修改桌面系统
  8. python列表前加星号是什么_Python中的星号:用途及使用方法(1)
  9. 人工智能知识全面讲解:垃圾邮件克星——朴素贝叶斯算法
  10. python win32api键盘_pythonwin32api键盘输入教程