【发布时间】:2014-07-01 06:21:31
【问题描述】:
我得到了一些代码并试图删除给定代码的所有警告。
而对于某些功能,例如:
sub_main(int /*argc*/, char** /*argv*/){
-------------
obj1* ptr1 = new obj1(xxx);
obj2* ptr2 = obj1->xxxx(xxxx)
-------------
}
虽然这个 ptr1 和 ptr2 根本没有在这个函数中使用。 (它应该在某个地方使用,因为如果我将它们注释掉,我会得到某些错误)。
还有一些方法可以消除未使用参数的警告,例如
sub_main(int /*argc*/ )
或
sub_main(int a _ _ attribute_ _ ((unused)))
虽然对于未使用的变量,有没有类似的巧妙方法来消除警告?
我不想为 gcc 做一些 ifdef 来删除警告或使 makefile 中的警告静音。
谢谢。
【问题讨论】:
-
消除未使用变量警告的常用方法是声明
(void)unused;。 -
顺便说一句:我希望你用
-Wall -Wextra编译。那么,编译器怎么会接受一个没有返回类型的函数呢? -
ptr1和ptr2在sub_main中本地定义。你说如果你把它们注释掉,你会得到错误——这意味着你正在在sub_main的某个地方使用它们。在 C++ 中,不能定义没有返回类型的函数(除非它是构造函数或析构函数)。请更新您的问题以显示完整的独立示例,以及您从编译器获得的确切警告消息。阅读:sscce.org -
obj1->xxxx?真的吗?
标签: c++ gcc warnings unused-variables