c/c++语言开发共享使用标记为__unused的参数时发出警告

使用-Wunused参数标志,可以对未使用的参数强制__unused,作为编译器优化。 以下代码会导致两个警告:

#include  int main(int argc, char **argv) { printf("hello worldn"); return 0; } 

通过添加__unused未使用的参数来修复这些警告。

 #include  int main(int __unused argc, char __unused **argv) { printf("hello worldn"); return 0; } 

当您使用标记为__unused的参数时,clang 4.1不会发出警告或错误。

 #include  int main(int __unused argc, char __unused **argv) { printf("hello world. there are %d argsn", argc); return 0; } 

使用__attribute__((unused))表现出相同的行为。

 int main(int __attribute__((unused)) argc, char __attribute__((unused)) **argv) { 

有没有办法在__unused上发出警告或错误? 如果您不小心在已使用的参数上留下__unused,会发生什么? 在上面的例子中, argc似乎具有正确的值,尽管它可能是编译器没有利用提示,并且我不会在没有更多理解的情况下依赖于此行为。

    __unused属性旨在防止在函数/方法或函数/方法的参数未使用时投诉,而不是强制使用它们。

    GCC手册中使用的术语是:

    附加到函数的此属性意味着该函数可能未使用

    对于变量 :

    附加到变量的此属性表示该变量可能未使用。

    最常见的用途是针对接口进行开发 – 例如回调,您可能会被迫接受多个参数但不会使用所有参数。

    我在进行测试驱动开发时会使用它 – 我的初始例程需要一些参数并且什么都不做,因此所有参数都需要__attribute__((unused)) 。 在我开发它时,我使用了参数。 在开发结束时,我将它们从方法中删除,看看是什么震撼了。

    对此猫进行换肤的另一种方法是删除(或注释掉)参数的名称。

     int main ( int argc, char ** /* argv */ ) { printf("hello world. there are %d argsn", argc); return 0; } 

    现在,编译器不会警告argv是否未被使用,并且您无法使用它,因为它没有名称。

    需要了解更多c/c++开发分享使用标记为__unused的参数时发出警告,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享使用标记为__unused的参数时发出警告相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980445.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐