Partilhar via


/H (restringir comprimento de nomes externos)

Preterido. Restringe o comprimento de nomes externos.

Sintaxe

/Hnumber

Argumentos

number
Especifica o comprimento máximo de nomes externos permitidos em um programa.

Comentários

Por padrão, o comprimento dos nomes externos (públicos) é de 2.047 caracteres. Isso é verdadeiro em programas do C e C++. O uso de /H só pode diminuir o comprimento máximo permitido de identificadores, não aumentá-lo. Um espaço entre /H e number é opcional.

Se um programa contiver nomes externos maiores que o number, os caracteres extras serão ignorados. Se você compilar um programa sem /H e um identificador contiver mais de 2.047 caracteres, o compilador gerará o Erro Fatal C1064.

O limite de comprimento inclui qualquer sublinhado à esquerda criado pelo compilador (_) ou no sinal (@). Esses caracteres fazem parte do identificador e ocupam um local significativo.

  • O compilador adiciona um sublinhado à esquerda (_) aos nomes modificados pelas convenções de chamada __cdecl (padrão) e __stdcall e um sinal à esquerda (@) aos nomes modificados pela convenção de chamada __fastcall.

  • O compilador acrescenta informações de tamanho do argumento aos nomes modificados pelas convenções de chamada __fastcall e __stdcall e adiciona informações de tipo a nomes do C++.

A /H pode lhe ser útil:

  • Aco criar programas de linguagem mista ou portátil.

  • Ao usar ferramentas que impõem limites ao comprimento dos identificadores externos.

  • Quando você quiser restringir a quantidade de espaço que os símbolos usam em um build de depuração.

O exemplo a seguir mostra como o uso da /H pode, na verdade, introduzir erros se os comprimentos de identificadores forem limitados demais:

// compiler_option_H.cpp
// compile with: /H5
// processor: x86
// LNK2005 expected
void func1(void);
void func2(void);

int main() { func1(); }

void func1(void) {}
void func2(void) {}

Você também deve ter cuidado ao usar a opção /H devido a identificadores de compilador predefinidos. Se o comprimento máximo do identificador for muito pequeno, determinados identificadores predefinidos não serão resolvidos, bem como determinadas chamadas de função de biblioteca. Por exemplo, se a função printf for usada e a opção /H5 for especificada no tempo de compilação, o símbolo _prin será criado para referenciar printf e isso não será encontrado na biblioteca.

O uso de /H é incompatível com /GL (Otimização de Programa Inteiro).

A opção /H está preterida desde o Visual Studio 2005; os limites máximos de comprimento foram aumentados e /H não é mais necessária. Para obter uma lista de opções do compilador preteridas, confira Opções do compilador preteridas e removidas em Opções do compilador listadas por categoria.

Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio

  1. Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.

  2. Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.

  3. Digite a opção do compilador na caixa Opções Adicionais.

Para definir essa opção do compilador via programação

Confira também

Opções do compilador MSVC
Sintaxe da linha de comando do compilador MSVC