2012-04-15 2 views
-4

Можно создать дубликат:
At least the first 31 ,or 63 characters of an internal name are significant?c99: 63 символа внутреннего имени значительны?

Вот прямая цитата из книги (K & R, 2-е изд, стр 35.):

«По крайней мере, первые 31 символа внутреннего имени являются значительными. Для имен функций и внешних переменных число может быть меньше 31, поскольку внешние имена могут использоваться ассемблерами и загрузчиками по сравнению с , которые язык не имеет контроля. Для внешних имен, стандартный гарантирует только для 6 символов и один случай.»

и в C99 нет ограничения длины на своих внутренних именах, но только первые 63 являются значительными.

Мой вопрос, почему эти ограничения конкретно или ? почему это число конкретно, почему не 19,24 или любое другое число? Если это проблема реализации, есть выгода от принятия его или ?

+0

Слепое предположение, но, возможно, потому, что как 31, так и 63, после добавления '\ 0' в конце, дайте силу 2. – Griwes

+0

Я думаю, что это может быть дублировано, если нет конструктивного ответа, и именно поэтому он был закрыт там. –

+1

@ HATEMEL-AZAB, это было ОЧЕНЬ конструктивно, как старый ответ, так и Матфей. Если вы этого не понимаете, вам нужно учиться больше. –

ответ

4

Это так, что длина может быть мощью двух, даже включая NUL-окончание.

+0

и каковы преимущества от того, чтобы сила была равна двум –

+0

@ HATEMEL-AZAB, она имеет тенденцию быть более эффективным. Например, часто, фактические куски malloc возвращаются в единицах мощности из двух. –

+0

@Matthew: Это миф. Нет никакой выгоды для распределителей, которые возвращают только куски размером в два размера, и тонны недостатков. Любой, кто до сих пор это делает, живет в 70-х годах, и в отличие от некоторых практик внедрения, где «проживание в 70-х годах» имеет хотя бы какую-то ценность, этот конкретный не имеет значения. –

Смежные вопросы