11.2 Пределы реализации
В CPP имеется небольшое количество внутренних ограничений. В этом разделе перечислены ограничения, которые стандарт C требует не опускать ниже определенного минимума, а также все остальные известные ограничения. Цель состоит в том, чтобы ограничений было как можно меньше. Если вы столкнетесь с недокументированным или неудобным ограничением, сообщите об этом как об ошибке. См. Отчет об ошибках в Руководстве по использованию GNU компилятора (GCC).
Когда мы говорим, что что-то ограничено только доступной памятью, это означает, что внутренние структуры данных не накладывают собственных ограничений, и память выделяется с помощью malloc или эквивалента. Таким образом, фактическое ограничение будет зависеть от многих факторов, таких как размер других объектов, выделенных компилятором одновременно, объем памяти, потребляемый другими процессами на том же компьютере и т. д.
- Уровни вложенности файлов ‘#include’.
Мы накладываем произвольное ограничение в 200 уровней, чтобы избежать бесконечной рекурсии. Стандарт требует не менее 15 уровней.
- Уровни вложенности условной включения.
Стандарт C предписывает, чтобы этот показатель был не менее 63. CPP ограничен только доступной памятью.
- Уровни вложенных скобок в полном выражении.
Стандарт C требует, чтобы этот показатель был не менее 63. В препроцессорных условных выражениях он ограничен только доступной памятью.
- Значимые начальные символы в идентификаторе или имени макроса.
Препроцессор обрабатывает все символы как значимые. Стандарт C требует, чтобы только первые 63 символа были значимыми.
- Количество макросов, одновременно определенных в одном файле трансляции.
Стандарт требует, чтобы это число было не менее 4095. CPP ограничен только доступной памятью.
- Количество параметров в определении макроса и аргументов в вызове макроса.
Мы разрешаем
USHRT_MAX, что не меньше 65 535. Минимальное значение, требуемое стандартом, равно 127. - Количество символов в логической строке исходного кода.
Стандарт C требует, чтобы это число было не менее 4096. CPP не накладывает ограничений на это, но для строк, длиннее 65 535 символов, в диагностике могут быть указаны неправильные номера столбцов.
- Максимальный размер файла исходного кода.
Стандарт не устанавливает никакого нижнего предела для максимального размера файла исходного кода. GNU cpp отображает файлы в память, поэтому он ограничен доступным адресным пространством. Обычно это не менее двух гигабайт. В зависимости от операционной системы размер физической памяти может или может не являться ограничением.
Далее: Устаревшие возможности, Предыдущее: Определяемое реализацией поведение, Вверх: Детали реализации [Оглавление][Указатель]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.5.0/cpp/Implementation-limits.html