Limites du compilateur

La norme C++ recommande certaines limites pour diverses constructions de langage. Voici une liste des cas où le compilateur Microsoft C++ n’implémente pas les limites recommandées. Le premier nombre est la limite établie dans la norme ISO C++11 (INCITS/ISO/IEC 14882-2011[2012], Annexe B) et le deuxième nombre est la limite implémentée par le compilateur Microsoft C++ :

  • Niveaux d’imbrication des instructions composées, des structures de contrôle d’itération et des structures de contrôle de sélection - Standard C++ : 256, compilateur Microsoft C++ : dépend de la combinaison d’instructions imbriquées, mais généralement comprises entre 100 et 110.

  • Paramètres d’une définition de macro : C++ standard : 256, compilateur Microsoft C++ utilisant /Zc:preprocessor-:127 ou /Zc:preprocessor:32767.

  • Arguments d’un appel de macro - C++ standard : 256, compilateur Microsoft C++ utilisant /Zc:preprocessor-:127 ou /Zc:preprocessor:32767.

  • Caractères d’un littéral de chaîne de caractères ou d’un littéral de chaîne large (après concaténation) : C++ standard : 65536, compilateur Microsoft C++ : 65535 caractères à octet unique, y compris les caractères de fin NULL et 32767 caractères de double octet, y compris le terminateur NULL.

  • Niveaux de définitions de classe, de structure ou d’union imbriquées dans une norme unique struct-declaration-list - C++ : 256, compilateur Microsoft C++ : 16.

  • Initialiseurs membres dans une définition de constructeur - C++ standard : 6144, compilateur Microsoft C++ : au moins 6144.

  • Qualifications d’étendue d’un identificateur - Standard C++ : 256, compilateur Microsoft C++ : 127.

  • Spécifications imbriquées extern - Norme C++ : 1024, compilateur Microsoft C++ : 9 (sans compter la spécification implicite extern dans l’étendue globale, ou 10, si vous comptez la spécification implicite extern dans l’étendue globale.)

  • Arguments de modèle dans une déclaration de modèle - Standard C++ : 1024, compilateur Microsoft C++ : 2046.

Voir aussi

Comportement non standard