Compiler-Grenzen

Der C++-Standard empfiehlt Grenzen für verschiedene Sprachkonstrukte. Es folgt eine Liste der Fälle, in denen der Microsoft C++-Compiler die empfohlenen Grenzwerte nicht implementiert. Die erste Zahl ist der Grenzwert, der im ISO C++11-Standard (INCITS/ISO/IEC 14882-2011[2012], Anhang B) festgelegt ist, und die zweite Zahl ist die vom Microsoft C++-Compiler implementierte Grenze:

  • Schachtelungsebenen zusammengesetzter Anweisungen, Iterationssteuerungsstrukturen und Auswahlsteuerungsstrukturen – C++-Standard: 256, Microsoft C++-Compiler: hängt von der Kombination von anweisungen ab, die geschachtelt sind, aber im Allgemeinen zwischen 100 und 110.

  • Parameter in einer Makrodefinition – C++-Standard: 256, Microsoft C++-Compiler mit /Zc:preprocessor-:127 oder verwenden /Zc:preprocessor:32767.

  • Argumente in einem Makroaufruf – C++-Standard: 256, Microsoft C++-Compiler mit /Zc:preprocessor-:127 oder verwenden /Zc:preprocessor:32767.

  • Zeichen in einem Zeichenfolgenliteral oder einem breiten Zeichenfolgenliteral (nach Verkettung) – C++-Standard: 65536, Microsoft C++-Compiler: 65535 Single-Byte-Zeichen, einschließlich NULL-Terminator und 32767-Doppelbytezeichen, einschließlich des NULL-Terminators.

  • Ebenen geschachtelter Klassen-, Struktur- oder Vereinigungsdefinitionen in einem einzigen struct-declaration-list - C++-Standard: 256, Microsoft C++-Compiler: 16.

  • Memberinitialisierer in einer Konstruktordefinition – C++-Standard: 6144, Microsoft C++-Compiler: mindestens 6144.

  • Bereichsqualifikationen eines Bezeichners – C++-Standard: 256, Microsoft C++-Compiler: 127.

  • Geschachtelte extern Spezifikationen – C++-Standard: 1024, Microsoft C++-Compiler: 9 (nicht zählen die implizite extern Spezifikation im globalen Bereich oder 10, wenn Sie die implizite extern Spezifikation im globalen Bereich zählen.)

  • Vorlagenargumente in einer Vorlagendeklaration - C++-Standard: 1024, Microsoft C++-Compiler: 2046.

Siehe auch

Nicht dem Standard entsprechendes Verhalten