11.2 Пределы реализации
CPP имеет небольшое количество внутренних ограничений. В этом разделе перечислены ограничения, которые стандарт C требует устанавливать не ниже определенных минимальных значений, а также все другие известные ограничения. Цель состоит в том, чтобы ограничений было как можно меньше. Если вы столкнетесь с недокументированным или неудобным ограничением, пожалуйста, сообщите об этом как об ошибке. См. Отчет об ошибках в документации GNU Compiler Collection (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-12.1.0/cpp/Implementation-limits.html