加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么标识符的前31个字符必须是唯一的?

发布时间:2020-12-16 09:48:43 所属栏目:百科 来源:网络整理
导读:MISRA 2004规则5.1规定所有标识符必须具有唯一的前31个字符.这条规则的原因是什么?这是某些编译器的技术限制吗? 解决方法 C标准仅保证标识符中的一定数量的初始字符是重要的.对于C99,外部标识符为31个字符.即使这是ANSI / IS C的一大步,它只保证外部标识符
MISRA 2004规则5.1规定所有标识符必须具有唯一的前31个字符.这条规则的原因是什么?这是某些编译器的技术限制吗?

解决方法

C标准仅保证标识符中的一定数量的初始字符是重要的.对于C99,外部标识符为31个字符.即使这是ANSI / IS C的一大步,它只保证外部标识符的6个重要字符…(所以如果你想知道为什么这么多旧的C函数有不可发音的名字,这就是一个原因.)

在实践中,编译器倾向于在标识符中支持更多数量的重要字符(而且IIRC,C标准甚至有一个脚注鼓励这一点),但MISRA可能想要选择已经由当时最新的C标准保证的“安全”限制,C99,没有施加由C90保证的6的限制,而MISRA 2004则遵循该限制.

编辑:由于评论中有两次被质疑,让我澄清一下:MISRA 2004不遵循C99,并且没有确凿的证据表明C99标准对MISRA选择的特定31个字符的限制做出了贡献.但是,限制不是来自C90(ISO C),因为C90指定了6个字符的限制.因此,必须接受MISRA在没有任何已知原因的情况下单独选择数字31,或者(在我看来更可能)在此特定决策中遵循C99的示例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读