MISRA C规范学习笔记9
Grey
MISRA C规范学习笔记9
规则摘录与分析

- 需要检查一下,编译器以及链接器是否支持31个字符的变量的识别。
验证想法
- 为了先看看一个编译器究竟可以支持多少长度,我做了一个简单的测试,找的是试用版本的CW来做测试。自然,31位的长度必须是要考虑到的。这个验证应该有很多方面,我只是单纯从编译结果看一下是否与代码一致。
#include "MPC5644A.h"
/* length is 31 here */
volatile int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
/* 64 */
volatile int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
/* 124 */
volatile int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
volatile int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
volatile int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAA;
int main(void)
{
volatile int i = 0;
/* Loop forever */
for (;;)
{
i++;
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa++;
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa++;
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa++;
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa++;
}
}
- 编译出来的map文件如下:

检验了一下,这个长度还是一致的。这个也让我对CW刮目相看,居然能够支持这么长的变量。
小结
我没有进行更深入的测试,关于测试方法我觉得应该也会有一个通用的方式。不过,既然相应的变量都在map中找到了不同的地址,说明编译以及链接的处理还是准确的。
















