使用函数而不是宏来抑制 misra 警告
Supress misra warning with function instead of macro
我想问一下是否有一种方法可以使用自定义函数来抑制 misra 警告,而不必到处写 \ Misra Warning Suppression
(总是相同的推导)。
我经常在我的代码中的很多地方使用 throw std::runtime_error("Custom Error")
。不幸的是,我必须进行 misra 警告抑制。所以我必须在每个 throw std::runtime_error("Custom Error");
之后添加 \ Misra Warning Suppression
。在代码中是这样的:throw std::runtime_error("Custom Error"); \ Misra Warning Suppression
。因为我真的必须在任何地方都使用相同的推导,所以我考虑缩短它。
在这里,std::exception 可以是任何错误类型。所以我想过像这样使用宏:
#define EXCEPTION_MISRA( TYPE, MESSAGE ) \
throw TYPE( MESSAGE) // Use Misra Suppression
int main()
{
EXCEPTION_MISRA( std::runtime_error, "Custom Error" );
return 0;
}
不幸的是,对于我的用例来说,宏并不是真正的鸡蛋黄。有什么方法可以使用函数来做同样的事情吗?有点像制作自己的 xyz::throw 函数,在函数的哪个位置添加了 \ Misra Warning Suppression
?
谢谢!
我不使用 MISRA,但是模板有用吗?像
template<class E>
[[ noreturn ]] void exception_misra(const std::string& message)
{
throw E(message); // Use Misra Suppression
}
这样调用:
exception_misra<std::runtime_error>("Custom Error");
我想问一下是否有一种方法可以使用自定义函数来抑制 misra 警告,而不必到处写 \ Misra Warning Suppression
(总是相同的推导)。
我经常在我的代码中的很多地方使用 throw std::runtime_error("Custom Error")
。不幸的是,我必须进行 misra 警告抑制。所以我必须在每个 throw std::runtime_error("Custom Error");
之后添加 \ Misra Warning Suppression
。在代码中是这样的:throw std::runtime_error("Custom Error"); \ Misra Warning Suppression
。因为我真的必须在任何地方都使用相同的推导,所以我考虑缩短它。
在这里,std::exception 可以是任何错误类型。所以我想过像这样使用宏:
#define EXCEPTION_MISRA( TYPE, MESSAGE ) \
throw TYPE( MESSAGE) // Use Misra Suppression
int main()
{
EXCEPTION_MISRA( std::runtime_error, "Custom Error" );
return 0;
}
不幸的是,对于我的用例来说,宏并不是真正的鸡蛋黄。有什么方法可以使用函数来做同样的事情吗?有点像制作自己的 xyz::throw 函数,在函数的哪个位置添加了 \ Misra Warning Suppression
?
谢谢!
我不使用 MISRA,但是模板有用吗?像
template<class E>
[[ noreturn ]] void exception_misra(const std::string& message)
{
throw E(message); // Use Misra Suppression
}
这样调用:
exception_misra<std::runtime_error>("Custom Error");