/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
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.
Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.
Digite a opção do compilador na caixa Opções Adicionais.
Para definir essa opção do compilador via programação
- Consulte AdditionalOptions.
Confira também
Opções do compilador MSVC
Sintaxe da linha de comando do compilador MSVC