Содержание
Пределы трансляции
Все удовлетворяющие стандарту компиляторы C должны быть способны
компилировать и исполнять программу, содержащую хотя бы одно вхождение из
перечисленных ниже пределов. Каждый предел является минимальным (наименьшим
максимумом), который может наложить компилятор.
Компиляторы Watcom C/16 и C/32 не накладывают здесь какие-либо пределы.
Все они возникают только благодаря ограничениям памяти.
-
15 вложенных уровней составных команд, структур управления циклами
(
for
, do
/while
, while
) и
структур управления выбором (if
, switch
),
-
8 вложенных уровней условного включения (
#if
),
-
12 деклараторов указателей, массивов и функций (в любом порядке)
модифицирующих в декларации арифметический, структурный тип, объединение или
незавершенный тип,
-
31 вложенный уровень деклараторов в скобках внутри полного декларатора,
-
32 вложенных уровня выражений в скобках внутри полного выражения,
-
31 значащий начальный символ во внутреннем идентификаторе или имени макро,
-
6 значащих начальных символов во внешнем идентификаторе,
-
511 внешних идентификаторов в одной единице трансляции (модуле),
-
127 идентификаторов, объявленных в блоке, с областью видимости внутри блока,
-
1024 идентификаторов макро, одновременно определённых в одной единице
трансляции (модуле),
-
31 параметр в одном определении функции,
-
31 аргумент в одном вызове функции,
-
31 параметр в одном макроопределении,
-
31 параметр в одном вызове макро,
-
509 символов в логической (соединённой) исходной строке,
-
509 символов в стринговом литерале или расширенном стринговом литерале (после
объединения),
-
32767 байт в объекте,
-
8 вложенных уровней включённых файлов (по
#include
),
-
257 меток
case
команды switch
(за исключением меток
вложенных команд switch
)
-
127 членов в одной структуре или объединении,
-
127 констант перечисления в одном перечислении,
-
15 уровней вложенных определений структур или объединений в одном списке
деклараций структуры (определении структуры или объединения).