一般来说,我会在一个类头文件中使用constexpr定义一堆变量。这在功能上是可行的。在MISRA遵从性方面,当这个类头在多个文件中使用时,它违反了规则3-2-2/3-2-4,该规则要求一个变量只能定义一次(这是C++14,从我发现的情况来看,它不能被内联,除非我将它变成一个函数)。
我怎么才能避免这个问题呢?如果我将它们移到类外部的cpp文件中,那么它们是全局作用域,而MISRA不允许全局作用域,因此只需要为var创建一个名称空间。我尝试了使用const的方法,但这不起作用,或者我可能做错了。
是不是MISRA的设计者认为我遗漏了什么?显然,在单词中有一个变量和一个描述要比在代码中有一些随机数要好。那么一定有某种方法可以让它正确工作吗?或者,在这种情况下,每个人都会忽略这种违规行为吗?
发布于 2020-10-08 21:24:48
MISRA的意图是该规则不应应用于常量。根据他们的论坛@ https://misra.org.uk/forum/viewtopic.php?f=188&t=1757
此规则不适用于常量,将在下一版本中加以说明
https://stackoverflow.com/questions/64235310
复制相似问题