Compartilhar via


Limites do compilador

O padrão do C++ recomenda limites para várias construções de linguagem. A lista a seguir contém casos onde o compilador do Microsoft C++ não implementa os limites recomendados. O primeiro número é o limite estabelecido no padrão ISO C++11 (INCITS/ISO/IEC 14882-2011[2012], Anexo B) e o segundo número é o limite implementado pelo compilador do Microsoft C++:

  • Níveis de aninhamento de instruções compostas, estruturas de controle de iteração e estruturas de controle de seleção - padrão C++: 256, compilador do Microsoft C++: dependem da combinação de instruções que são aninhadas, mas geralmente entre 100 e 110.

  • Parâmetros em uma definição de macro - padrão C++: 256, compilador Microsoft C++ usando /Zc:preprocessor-:127 ou usando /Zc:preprocessor:32767.

  • Argumentos em uma invocação de macro - padrão C++: 256, compilador Microsoft C++ usando /Zc:preprocessor-:127 ou usando /Zc:preprocessor:32767.

  • Caracteres em uma cadeia de caracteres literal ou em uma cadeia de caracteres largos literal (depois da concatenação) - padrão C++: 65536, compilador do Microsoft C++: 65535 caracteres de byte único, incluindo o terminador NULL e caracteres de byte duplo 32767, incluindo o terminador NULL.

  • Níveis de definições de classes, estruturas ou uniões aninhadas em uma única struct-declaration-list - padrão C++: 256, compilador do Microsoft C++: 16.

  • Inicializadores de membro em uma definição de construtor - padrão C++: 6144, compilador do Visual C++: pelo menos 6144.

  • Qualificações do escopo de um identificador - padrão C++: 256, compilador do Visual C++:127.

  • Especificações aninhadas extern - padrão C++: 1024, compilador do Microsoft C++: 9 (não conta a especificação implícita extern no escopo global ou 10, caso você conte a especificação implícita extern no escopo global).

  • Argumentos do modelo em uma declaração de modelo - padrão C++: 1024, compilador do Microsoft C++:2046.

Confira também

Comportamento não padrão