兼容的声明 __attribute__ ((节( ".abc.dfe" ))) 常量易失性 uint8 属性变量 = 0;- 符合MISRA标准



在我正在测试的Misra指南违规的项目文件中声明以下const,为

__attribute__ ((section(".abc.dfe"))) const volatile uint8 attributeVariable = 0;

Misra测试产生以下消息

A compatible declaration shall be visible when an object or function with external linkage is defined. 
Global definition of 'attributeVariable ' variable has no previous declaration.

我已经修复了其他全局定义,这些定义不是通过将其声明为

来使用__attribute__关键字
extern const volatile uint8 attributeVariable;

在标题文件中。我不确定在使用__attribute__关键字时,我是否可以以相同的方式以相同的方式编写声明。 __attribute__是否会影响我写变量的外部声明的方式?

这里有两个问题。

首先,Misra-C要求代码应为标准C,因此您必须与使用标准c。

的规则建立偏差

第二,Misra-C不喜欢您在不是static的文件范围内声明变量。全局变量不仅被Misra-C皱眉了,因此请问自己是否确实必须在整个地方揭露此变量,或者您是否可以通过setter/getter函数访问它。

话虽如此,我相信__attribute__的工作原理与其他类型的预选赛一样。您可以在声明等的开头或结束时编写它。因此,写作应该没有问题:

extern const volatile uint8_t attributeVariable __attribute__ ((section(".abc.dfe")));

最新更新