cppcheck 认为宏中使用的变量没有被使用
cppcheck considers that variables used in macro are not used
例如,我有这个片段:
const int array_type = model.accessors[accessor_index].type;
Assert(array_type == TypeCode<T>(), "");
我收到这个错误:
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;
Assert
是一个基于常规 assert
的宏,但在抛出错误的基础上使用了一些内部日志记录机制。
有没有办法让 cppcheck 注意到变量实际被使用了?
警告告诉您:禁用 Assert
时,您正在创建一个从未使用过的变量。
我建议将语句移动到 assert 语句中;但是,您也可以使用处理器在禁用调试时删除代码。
Assert(model.accessors[accessor_index].type == TypeCode<T>(), "");
另一方面,如果您确实需要该行代码(可能是因为 std::map::operator[]
是非常量),那么您应该在断言行中使用 at
并添加注释。
例如,我有这个片段:
const int array_type = model.accessors[accessor_index].type;
Assert(array_type == TypeCode<T>(), "");
我收到这个错误:
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;
Assert
是一个基于常规 assert
的宏,但在抛出错误的基础上使用了一些内部日志记录机制。
有没有办法让 cppcheck 注意到变量实际被使用了?
警告告诉您:禁用 Assert
时,您正在创建一个从未使用过的变量。
我建议将语句移动到 assert 语句中;但是,您也可以使用处理器在禁用调试时删除代码。
Assert(model.accessors[accessor_index].type == TypeCode<T>(), "");
另一方面,如果您确实需要该行代码(可能是因为 std::map::operator[]
是非常量),那么您应该在断言行中使用 at
并添加注释。