Compartilhar via


/H (restringir o tamanho de nomes externos)

Restringe o comprimento de nomes externos.

/Hnumber

Arguments

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

Comentários

Por padrão, o comprimento de nomes (públicos) externos é 2,047 caracteres. Isso é verdadeiro para programas c e C++. Usando /H pode apenas diminuir o comprimento máximo permitido de identificadores, não aumente o proprietário. Um espaço entre /H e number é opcional.

Se um programa contiver nomes externos mais de number, os caracteres extras serão ignorados. Se você compilar um programa sem /H e se um identificador contém mais de 2,047 caracteres, o compilador gerará C1064 de erro fatal.

O limite de comprimento inclui qualquer sublinhado à esquerda criado pelo compilador (_) ou arroba (@). Esses caracteres são parte do identificador e levar a um local significativo.

  • O compilador adiciona um líder sublinhado (_) para nomes modificados pela __cdecl (padrão) e __stdcall chamando convenções e líder de arroba (@) para nomes modificados pela __fastcall chamando convenção.

  • O compilador acrescenta informações de tamanho do argumento nomes modificado pela __fastcall e __stdcall chamando a convenções e adiciona informações de tipo para nomes de C++.

Você pode encontrar /H útil:

  • Quando você cria programas de linguagem mista ou portátil.

  • Quando você usar ferramentas que impõem limites no comprimento de identificadores externos.

  • Quando você deseja restringir a quantidade de espaço que símbolos de usam em uma compilação de depuração.

A exemplo a seguir mostra como usar /H realmente é possível introduzir erros se os comprimentos de identificador são muito limitados:

// 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 o /H opção por causa de identificadores de compilador predefinido. Se o comprimento máximo do identificador é muito pequeno, certos identificadores predefinidos será a biblioteca não resolvida, bem como determinadas chamadas de função. Por exemplo, se a printf função é usada e a opção /H5 é especificado em tempo de compilação, o símbolo _prin será criado para fazer referência a printf, e não podem ser encontrado na biblioteca.

Uso de /H é incompatível com /GL (otimização de programa total).

/Hé obsoleto; aumentaram os limites de comprimento máximo e /H não é mais necessária. For more information, see Deprecated Compiler Options in Visual C++ 2005.

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

  1. Abra o projeto Property Pages caixa de diálogo. For details, see Como: Abrir páginas de propriedades do projeto.

  2. Clique o C/C++ pasta.

  3. Clique na a linha de comando página de propriedades.

  4. Digite a opção de compilador no Opções adicionais de caixa.

Para definir esta opção de compilador programaticamente

Consulte também

Referência

Opções do compilador

Definindo opções do compilador