1013

1013,第1张

1013

MISRA C规范学习笔记9

Grey

MISRA C规范学习笔记9

规则摘录与分析

  • 需要检查一下,编译器以及链接器是否支持31个字符的变量的识别。

    验证想法

  • 为了先看看一个编译器究竟可以支持多少长度,我做了一个简单的测试,找的是试用版本的CW来做测试。自然,31位的长度必须是要考虑到的。这个验证应该有很多方面,我只是单纯从编译结果看一下是否与代码一致。

    #include "MPC5644A.h"


    volatile int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

    volatile int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

    volatile int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
    volatile int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
    volatile int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAA;

    int main(void)
    {
        volatile int i = 0;

       
        for (;;)
        {
            i++;
            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa++;
            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa++;
            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa++;
            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa++;
        }
    }

  • 编译出来的map文件如下:
     


    检验了一下,这个长度还是一致的。这个也让我对CW刮目相看,居然能够支持这么长的变量。

    小结

    我没有进行更深入的测试,关于测试方法我觉得应该也会有一个通用的方式。不过,既然相应的变量都在map中找到了不同的地址,说明编译以及链接的处理还是准确的。

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zaji/5703288.html

  • (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-12-17
    下一篇 2022-12-18

    发表评论

    登录后才能评论

    评论列表(0条)

    保存