Udostępnij przez


Limity kompilatora

Standard C++ zaleca limity dla różnych konstrukcji językowych. Poniżej znajduje się lista przypadków, w których kompilator Microsoft C++ nie implementuje zalecanych limitów. Pierwsza liczba to limit ustanowiony w standardzie ISO C++11 (INCITS/ISO/IEC 14882-2011[2012], załącznik B), a druga liczba to limit wdrożony przez kompilator Microsoft C++:

  • Zagnieżdżanie poziomów instrukcji złożonych, struktur kontrolek iteracji i struktur kontroli wyboru — standardowa C++ 256, kompilator języka Microsoft C++: zależy od kombinacji zagnieżdżonych instrukcji, ale ogólnie z zakresu od 100 do 110.

  • Parametry w jednej definicji makr — standardowa C++ 256, kompilator Języka C++ przy użyciu : /Zc:preprocessor-127 lub : /Zc:preprocessor32767.

  • Argumenty w jednym wywołaniu makra — standardowa C++ 256, kompilator języka Microsoft C++ przy użyciu metody /Zc:preprocessor-:127 lub : /Zc:preprocessor32767.

  • Znaki literału ciągu znaków lub literału ciągu szerokiego (po skompilowaniu) — standardowa C++ 65536, kompilator języka Microsoft C++: 65535 znaków jednobajtowych, w tym terminator NULL i 32767 znaków dwubajtowych, w tym terminator NULL.

  • Poziomy zagnieżdżonych definicji klas, struktury lub unii w jednym struct-declaration-list standardzie — C++ 256, kompilator języka Microsoft C++: 16.

  • Inicjatory składowe w definicji konstruktora — standardowa C++ 6144, kompilator języka Microsoft C++: co najmniej 6144.

  • Kwalifikacje zakresu jednego identyfikatora — standardowa C++ 256, kompilator Języka C++: 127.

  • Specyfikacje zagnieżdżone extern — standard C++: 1024, kompilator języka Microsoft C++: 9 (nie licząc niejawnej extern specyfikacji w zakresie globalnym lub 10, jeśli zliczasz niejawną extern specyfikację w zakresie globalnym).

  • Argumenty szablonu w deklaracji szablonu — standardowa C++ 1024, kompilator Języka C++: 2046.

Zobacz też

Niestandardowe zachowanie