我在 PC-Lint (au-misra-cpp.lnt) 中收到这些错误:
ConverterUtil.cpp(90):错误 864:(信息——涉及变量“transformValue”的表达式可能取决于评估顺序 [ MISRA C++ 规则 5-2-10 ])
ConverterUtil.cpp(90):错误 864:(信息——涉及变量“transformValue”的表达式可能取决于评估顺序 [ MISRA C++ 规则 5-2-10 ])
ConverterUtil.cpp(90): 错误 534: (警告 -- 忽略函数 'std::transform(std::_String_iterator>>, std::_String_iterator>>, std::_String_iterator>>, int (*) (int))'(与第 998 行比较,文件 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\algorithm)[MISRA C++ 规则 0-1-7 和 8-4-6],[ MISRA C++ 规则 0-3-2])
在此代码上:
/**Conversion from std::string to bool*/
bool ConverterUtil::ConvertStdStringToBool(const std::string value)
{
std::string transformValue = value;
bool retValue = false;
std::transform(transformValue.begin(), transformValue.end(), transformValue.begin(), &::tolower);
if(transformValue == std::string(static_cast<const char *>("true")))
{
retValue = true;
}
return retValue;
}
我猜它不喜欢我在转换中使用相同的 std::string 作为输入和输出的事实,但是使用另一个字符串作为输出会给出相同的错误。
是否可以使 std::transform MISRA 兼容?