Поделиться через


Пределы компилятора

Стандарт языка C++ рекомендует ограничения для различных языковых конструкций. Ниже приведен список случаев, когда компилятор Visual C++ не реализует рекомендуемые ограничения. Первое число является ограничением, установленным в стандарте ISO C++ 11 (INCITS/ISO/IEC 14882-2011[2012], приложение B), а второе — ограничением, реализуемым Visual C++:

  • Число уровней вложения составных операторов, структур управления итерациями и структур управления выбором [стандарт C++: 256] (компилятор Visual C++: зависит от сочетания вложенных операторов, но обычно в диапазоне 100–110).

  • Число параметров в одном определении макроса [стандарт C++: 256] (компилятор Visual C++: 127).

  • Число аргументов в одном вызове макроса [стандарт C++: 256] (компилятор Visual C++: 127).

  • Число символов в строковом литерале, содержащем символы или расширенные символы (после объединения) [стандарт C++: 65536] (компилятор Visual C++: 65535 однобайтовых символов, включая символ конца строки null и 32767 двухбайтовых символов, включая символ конца строки null).

  • Число уровней вложения определений класса, структуры или объединения в одном компоненте struct-declaration-list [стандарт C++: 256] (компилятор Visual C++: 16).

  • Число инициализаторов членов в определении конструктора [стандарт C++: 6144] (компилятор Visual C++: как минимум 6144).

  • Число квалификаций области одного идентификатора [стандарт C++: 256] (компилятор Visual C++: 127).

  • Число вложенных спецификаций extern [стандарт C++: 1024] (компилятор Visual C++: 9 (не считая неявную спецификацию extern в глобальной области, или 10 с учетом неявной спецификации extern в глобальной области).

  • Число аргументов шаблона в объявлении шаблона [стандарт C++: 1024] (компилятор Visual C++: 2046).

См. также

Ссылки

Нестандартное поведение