C++ 从断言中删除未使用的值警告

C++ 从断言中删除未使用的值警告,c++,clang,assert,C++,Clang,Assert,我想创建一个有意义的断言,如下所示: assert(("precondition failed", false)); 它在GCC下工作正常,但Clang警告我未使用的值,即值“Premission failed” 你们知道在代码中禁用此警告的方法吗(请不要使用命令行参数或不可移植的代码)?重写断言也是一个很好的答案。这里有两种方法,即使使用-Wall-Wextra pedantic也不会生成警告: assert(((void)"precondition failed", false)); /

我想创建一个有意义的断言,如下所示:

assert(("precondition failed", false));
它在GCC下工作正常,但Clang警告我未使用的值,即值
“Premission failed”


你们知道在代码中禁用此警告的方法吗(请不要使用命令行参数或不可移植的代码)?重写断言也是一个很好的答案。

这里有两种方法,即使使用
-Wall-Wextra pedantic也不会生成警告:

assert(((void)"precondition failed", false));  // #1
assert("precondition failed" && false);        // #2

这里有两种方法,即使使用
-Wall-Wextra pedantic
,也不会生成警告:

assert(((void)"precondition failed", false));  // #1
assert("precondition failed" && false);        // #2

这里的
“前置条件失败”
有什么意义?它不是简化为注释吗?@dasblinkenlight,您调用了一个函数,但必须尊重输入值的某些属性。大多数情况下,断言都是有意义的,比如assert(num>=0),但有时会有一个复杂的流控制,如果命中了任何流控制,那么就会有一个assert(false),这对错误没有帮助,
“premission failed”
有什么意义?它不是简化为注释吗?@dasblinkenlight,您调用了一个函数,但必须尊重输入值的某些属性。大多数情况下,断言都是有意义的,比如assert(num>=0),但有时会有一个复杂的流控制,如果命中任何流控制,那么就会有一个assert(false),对错误没有帮助我相信一些静态分析器可以警告解决方案
#2
,但我喜欢解决方案
#1
,就像大多数未使用的变量宏都已实现一样,将来不太可能成为警告。=)我相信一些静态分析器可以警告解决方案
#2
,但我喜欢解决方案
#1
,这就像大多数未使用的变量宏都被实现了一样,不太可能在将来成为警告。=)