在类中定义const,同时遵循定义位置的misra

问题描述

一般来说,我会在类头文件中使用constexpr定义一堆变量。这在功能上起作用。符合MISRA要求时,如果在多个文件中使用此类标头,就会违反规则3-2-2 / 3-2-4,该规则要求变量仅定义一次(C ++ 14,根据我的发现,除非将其设为函数,否则无法内联。

我该如何解决?如果我将它们移到类之外的cpp文件中,则它们是全局作用域,而MISRA不允许全局作用域,因此仅需要为vars创建一个名称空间。我尝试了使用const的方法,但没有成功,或者我做错了。

MISRA的设计师是否有某些东西让我想念我?最好在文字中包含一个带说明的var,然后在代码中包含一个随机数,这是更好的选择。因此,必须要有某种方法才能使此功能正确运行?还是每个人都只是在这种情况下忽略了这种违规行为?

解决方法

MISRA的意图是该规则不应应用于常量。根据他们的论坛@ https://misra.org.uk/forum/viewtopic.php?f=188&t=1757

“此规则不适用于常量,将在下一版本中予以阐明”

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...