zoukankan      html  css  js  c++  java
  • #pragma 处理警告 clang diagnostic 的使用

    首先#pragma在本质上是声明,常用的功能就是注释,尤其是给Code分段注释;而且它还有另一个强大的功能是处理编译器警告,但却没有上一个功能用的那么多。

    clang diagnostic 是#pragma 第一个常用命令:

    #pragma clang diagnostic push

    #pragma clang diagnostic ignored "-相关命令"

        // 你自己的代码

    #pragma clang diagnostic pop

    常见的用法

    1. 方法弃用告警

    1
    2
    3
    4
    #pragma clang diagnostic push   
    #pragma clang diagnostic ignored "-Wincompatible-pointer-types"  
       //  
    #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

    5. 未使用default

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wcovered-switch-default"
    //    switch (style) {
    //        case UITableViewCellStyleDefault:
    //        case UITableViewCellStyleValue1:
    //        case UITableViewCellStyleValue2:
    //        case UITableViewCellStyleSubtitle:
    //            // ...
    //        default:
    //            return;
    //    }
    #pragma clang diagnostic pop

    参考链接:

    http://nshipster.cn/pragma/

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

    http://fuckingclangwarnings.com/

  • 相关阅读:
    练习三
    练习四
    练习二
    软件生命周期
    练习一 第六题
    练习一 第五题
    练习一 第四题
    练习一 第三题
    练习一 第二题
    AngularJs模块
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/7714841.html
Copyright © 2011-2022 走看看