Spec-Zone.ru › GCC 11 CPP

Следующая: Устаревшие возможности, Предыдущая: Определяемое реализацией поведение, Вверх: Подробности реализации [Оглавление][Индекс]

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-11.4.0/cpp/Implementation-limits.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API