C(变量)中“重要字符”的确切作用是什么?

前端之家收集整理的这篇文章主要介绍了C(变量)中“重要字符”的确切作用是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
C中“重要字符”的确切作用是什么,特别是在变量领域?我已经阅读了主题(K&R) At Least the first 31 characters…”,但我真的不明白重要字符的确切规则.我唯一理解的是这个主题已经灭绝,但我仍然需要知道!

解决方法

在当前的C标准中,ISO / IEC 9899:2011,第5.2.4.1节的翻译限制说:

The implementation shall be able to translate and execute at least one program that
contains at least one instance of every one of the following limits:18)


— 63 significant initial characters in an internal identifier or a macro name (each
universal character name or extended source character is considered a single
character)
— 31 significant initial characters in an external identifier (each universal character name
specifying a short identifier of 0000FFFF or less is considered 6 characters,each
universal character name specifying a short identifier of 00010000 or more is
considered 10 characters,and each extended source character is considered the same
number of characters as the corresponding universal character name,if any)19)

18) Implementations should avoid imposing fixed translation limits whenever possible.
19) See ‘‘future language directions’’ (6.11.3).

§6.11.3 External names
¶1 Restriction of the significance of an external name to fewer than 255 characters
(considering each universal character name or extended source character as a single
character) is an obsolescent feature that is a concession to existing implementations.

这意味着在处理名称时,编译器必须将前63个字符中不同的内部名称视为不同,但如果您被误导足以创建仅在第64个字符中不同的两个(或更多)标识符(前63个是相同的,但是一个中的第64个字符,例如1,而另一个是z),那么编译器可以合法地,并且在没有警告的情况下将这两个标识符视为相同.

外部名称的限制 – 影响链接器的名称而不是编译器本身 – 可能限制为少至31个字符.考虑:

extern int abcdefghijkjlmnopqrstuvwxyz123456;
extern int abcdefghijkjlmnopqrstuvwxyz123457;

如果系统(链接器)将您限制为31个字符,则可以将这两个声明视为引用相同的变量.

正如未来的路线部分所述,任何短于255的限制都是“过时”,这意味着在名称长度为255个字符之前不应受此限制.但该标准尚未规定255个字符作为限制.

历史

该标准的先前版本在名称长度的上限上具有较小的下限. C89标准只强制使用6个字符的外部名称(但它被认为是对现有链接器的痛苦让步),因此strcmp和StrCmp可以是相同的,abcdefg和abcdefz也是如此.部分麻烦可能是Fortran;它只需要支持6个字符的单体酶名称,因此在Fortran被广泛使用的系统上的连接器不需要支持更长的名称.

C99的限制与C11相同.

原文链接:https://www.f2er.com/c/115494.html

猜你在找的C&C++相关文章