当前位置:  开发笔记 > 程序员 > 正文

第9条诫命是什么意思?

如何解决《第9条诫命是什么意思?》经验,为你挑选了5个好方法。

在C程序员的十诫中,你对第9条诫命的解释是什么?

第9条诫命:

你的外部标识符在前六个字符中应该是独一无二的,尽管这种严厉的纪律是令人厌烦的,它的必要年代在你看来没有结束之前就会延伸,以免你撕裂你的头发并在那个命运的日子里生气,当你想要制造你的时候程序在旧系统上运行.

究竟这是什么一回事?



1> Paul Tomblin..:

旧链接器只使用了有限数量的符号字符 - 我似乎记得我开始编程的旧IBM大型机只使用了8个字符.C标准人员将6个字符确定为"最低公分母",但如果他们愿意,可以允许链接器解析更长的名称.

如果您确实击中了这些最低公分母连接器中的一个,外部符号(函数名称,外部变量等)ABCDEFG和ABCDEFH对它们看起来是相同的.除非你在真正的旧硬件上编程,否则你可以放心地忽略这个"诫命".

请注意,任何不能处理超过6个字符的链接器都不能执行C++,因为名称是mangling.


琐事:运行RT-11的PDP-11上的链接器在Radix-50中存储符号.三个字符适合一个16位字.六个字符的符号名称适合两个单词.对于整个操作系统来说,这是足够的符号,并且可以编写MACRO-11,TECO甚至是C编译器.

2> JosephStyons..:

外部标识符=可能必须从另一个系统调用的内容

前六个字符唯一的原因是古代系统的标识符可能有六个字符的限制.如果有一天,这样的系统试图调用你的代码,它需要能够区分你所有的函数.

这些天来,这对我来说似乎过于保守,除非你正在使用许多遗留系统.


外部标识符==在当前翻译单元外部可见的标识符.该标识符是否从另一个系统可见对其链接没有必要影响,反之亦然,它们是正交特性.你可以调整答案来反映这个吗?

3> Michael Burr..:

以下是C/C++编译器在各种标准下必须支持的外部标识符中的最小有效字符数:

C90 - 6个字符

C99 - 31个字符

C++ 98 - 1024个字符

下面是一个示例,如果您的工具集在这些限制上受到限制,您可以遇到这些问题(来自http://www.comeaucomputing.com/libcomo/):

使用Borland和MetroWerks CodeWarrior作为后端C的用户请注意:

================================================== ================

请注意,Borland编译器和链接器以及Metrowerks编译器的外部id最大长度似乎为250个字符.事实证明,一些生成的受损模板名称无法适应该空间.因此,当Borland或Metrowerks用作后端C编译器时,我们将libcomo使用的一些名称重新映射为较短的名称.事实上,我们无法摆脱以下划线开头的名字.实际上,有必要将大多数映射到2个字符的id名称.



4> Trevor Boyd ..:

回应:

C++ 98 - 1024个字符

'开始幽默'

第9条诫命附录:

如果你的外部标识符接近任何接近一千二百四十四的东西,你肯定会被迅速带到外面射击.

'/ end humor'


注意模板实例化器,因为你必须知道它会产生最恶劣的外部标识符.

5> Ferruccio..:

很多旧的编译器和链接器都限制了标识符的长度.六个字符是一个共同的限制.实际上,它们可能比这更长,但编译器或链接器会丢弃第六个字符后的所有内容.

这通常是为了节省符号表内存.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有