2012-04-13 2 views
0

Вот прямая цитата из книги (K & R, 2-й изд, стр 35.):.Насколько важны первые 31 или 63 символа внутреннего имени?

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

И в C99 нет ограничений по длине по его внутренним именам, но только первые 63 гарантированы быть значительными (§5.2.4.1 Ограничения перевода).

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

+5

Возможно, если вы скажете название книги, мы можем попытаться понять. – Steve

+1

Ну, тэг - kr-c, поэтому я принял дикий удар в темноте и посмотрел в K & R, и удивил, что это было. (Страница 35, 2-е издание.) – BoBTFish

+2

Компьютеры питаются от двух. Там я это сказал. –

ответ

8

Компилятор/линкер писатели, связанные с дизайном комитетом языка, как правило, накладывают определенные ограничения, так что они могут сделать предположение в осуществлении инструментария, или в сопроводительных форматах двоичного файла (например, ELF, COFF и т.д.). Числа 31 и 63, вероятно, были выбраны просто потому, что они были 2 n -1 и программисты вроде 2 n по какой-то глупой причине. Как правило, -1 должен учитывать либо ведущий _, либо конечный символ NUL.

+0

Что подразумевается под toolchain, а около 2n-1 может привести пример. Я запутался. –

+2

Так как это C, конечная \ 0 - безопасная ставка. @ HATEMEL-AZAB: «Toolchain» обычно относится к последовательности инструментов, используемых для создания программы на C: препроцессор, компилятор, компоновщик. – MSalters

+0

Обычно соглашения об именах на компиляторе <-> уровня компоновщика основаны на mangling, поэтому я подозреваю, что лидирующее подчёркнутое предположение сам. Имена, включенные в бинарные таблицы символов, обычно не заканчиваются NULL. Они дополняются фиксированной длиной. В любом случае, это просто удобный предел. –

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

  • Нет связанных вопросов^_^