C++ cppcheck认为不使用宏中使用的变量

C++ cppcheck认为不使用宏中使用的变量,c++,macros,static-analysis,cppcheck,C++,Macros,Static Analysis,Cppcheck,例如,我有以下代码片段: const int array_type = model.accessors[accessor_index].type; Assert(array_type == TypeCode<T>(), ""); Assert是一个基于常规Assert的宏,但在抛出错误的基础上使用了一些内部日志机制 有没有办法让cppcheck注意到该变量实际使用了?警告告诉您:当禁用断言时,您正在创建一个从未使用过的变量 我建议将该语句移动到assert语句中

例如,我有以下代码片段:

const int array_type = model.accessors[accessor_index].type;
Assert(array_type == TypeCode<T>(), "");
Assert
是一个基于常规
Assert
的宏,但在抛出错误的基础上使用了一些内部日志机制


有没有办法让cppcheck注意到该变量实际使用了?

警告告诉您:当禁用
断言时,您正在创建一个从未使用过的变量

我建议将该语句移动到assert语句中;但是,在禁用调试时,也可以使用处理器删除代码

Assert(model.accessors[accessor_index].type==TypeCode(),“”);

另一方面,如果您确实需要该行代码(可能是因为
std::map::operator[]
是非常量),那么您应该在断言行中使用
at
并添加注释。

如果该
assert
宏基于标准库的
assert
宏,那么该代码确实可以,不使用
数组类型
。当禁用
assert
时会发生这种情况。因此,要使cppcheck满意,我需要仅在启用assert时才使代码可用?对于标准库的
assert
宏,使用
model。访问器[accessor\u index].type==TypeCode()
并删除
array\u type
可能会消除警告。
Src/Engine/Animation/GltfLib.cpp:103:26: style: Variable 'array_type' is assigned a value that is never used. [unreadVariable]
    const int array_type = model.accessors[accessor_index].type;