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
,这就像大多数未使用的变量宏都被实现了一样,不太可能在将来成为警告。=)