Date: 11.12.2017 16:03:38
Стандарты языка задают минимальное поддерживаемое число значащих символов, которое может быть увеличено реализацией компилятора:
С89: 31 для внутренних, 6 - для экспортируемых через границы модулей
С99, С11: 63 для внутренних, 31 - для экспортируемых через границы модулей
Реализации:
Microsoft C - ограничение в макс. 247 символов по умолчанию для тех и других, изменяется ключом /H (https://docs.microsoft.com/ru-ru/cpp/c-language/c-identifiers)
GCC - нет ограничения для внутренних, а также и для экспортируемых на большинстве распространенных платформ, насколько я знаю.
Таковы факты. Что касается проблемы перегруженности глобального пространства имен, в С она решается двумя путями:
- Подключением к каждому модулю минимального количества объявлений. Вместо включения одного гигантского заголовочного файла во все модули, объявления разбиваются на более мелкие заголовки и в каждый модуль подключается только то, что нужно.
- Система префиксов. Например, все функции OpenGL начинаются с gl. Это уменьшает вероятность совпадений для функций, делающих одно и то же (например, одна будет abCreateVector, а другая xyCreateVector), без существенного увеличения длины идентификаторов.
Обычно 31 символ вполне должно хватать. С более длинными идентификаторами уже читаемость ухудшается, а не улучшается. А так да, для сильно сложных (архитектурно) проектов чистый си мало приспособлен. Он больше для отдельных, особо важных модулей, а вся обвязка на другом чем-то должна писаться.
Автор: VadimTagil