Spec-Zone.ru › GCC 13 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-13.3.0/cpp/Implementation-limits.html

Spec-Zone.ru

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