Condividi tramite


Limiti del compilatore

Nello standard C++ sono consigliati i limiti per vari costrutti di linguaggio. Di seguito è riportato un elenco di casi in cui il compilatore Microsoft C++ non implementa i limiti consigliati. Il primo numero è il limite stabilito nello standard ISO C++11 (INCITS/ISO/IEC 14882-2011[2012], Allegato B) e il secondo numero è il limite implementato dal compilatore Microsoft C++:

  • Livelli di annidamento di istruzioni composte, strutture di controllo di iterazione e strutture di controllo di selezione - Standard C++: 256, compilatore Microsoft C++: dipende dalla combinazione di istruzioni annidate, ma in genere tra 100 e 110.

  • Parametri in una definizione di macro - Standard C++: 256, compilatore Microsoft C++ usando /Zc:preprocessor-:127 o usando /Zc:preprocessor:32767.

  • Argomenti in una chiamata di macro - C++ standard: 256, compilatore Microsoft C++ usando /Zc:preprocessor-:127 o usando /Zc:preprocessor:32767.

  • Caratteri in un valore letterale stringa di caratteri o in un valore letterale stringa wide (dopo la concatenazione) - Standard C++: 65536, compilatore Microsoft C++: 65535 caratteri a byte singolo, incluso il carattere di terminazione NULL e 32767 caratteri a byte doppio, incluso il carattere di terminazione NULL.

  • Livelli di definizioni di classi, strutture o unioni annidate in un singolo struct-declaration-list standard C++: 256, compilatore Microsoft C++: 16.

  • Inizializzatori di membri in una definizione del costruttore - Standard C++: 6144, compilatore Microsoft C++: almeno 6144.

  • Qualifica di ambito di un identificatore - Standard C++: 256, compilatore Microsoft C++: 127.

  • Specifiche annidate extern - Standard C++: 1024, compilatore Microsoft C++: 9 (senza contare la specifica implicita extern nell'ambito globale o 10, se si conta la specifica implicita extern nell'ambito globale.

  • Argomenti di modello in una dichiarazione di modello - Standard C++: 1024, compilatore Microsoft C++: 2046.

Vedi anche

Comportamento non standard