我在GCC中遇到了未使用的局部变量警告问题.
通常我的代码看起来像这样:
bool success = foo();
assert(success);
Run Code Online (Sandbox Code Playgroud)
这适用于调试版本.然而,在发布中,断言编译为空,GCC给了我一个警告.
解决这个问题的最佳方法是什么?bool success =用#ifdef 包装似乎不是一个很好的解决方案......
我可能会定义一个特定于此场景的宏
#ifndef NDEBUG
#define verify(expression) assert(expression)
#else
#define verify(expression) expression
#endif
Run Code Online (Sandbox Code Playgroud)
我更喜欢这种方法而不是使用局部变量,因为它不会使用仅有条件存在的值污染方法.
总的来说,我发现在我的项目中有两组宏是非常有帮助的
我用的是宏
#define UNUSED(x) ((void)(x))
Run Code Online (Sandbox Code Playgroud)
像这样使用:
UNUSED(success);
Run Code Online (Sandbox Code Playgroud)
宏以使警告静音并记录变量未使用的事实(至少在某些构建中)是故意/确定的.
不了解GCC,但这一直在Microsoft Visual C++中有效:
(void) success;
Run Code Online (Sandbox Code Playgroud)
它引用变量而不实际执行任何操作.
| 归档时间: |
|
| 查看次数: |
3504 次 |
| 最近记录: |