Compartir a través de


/H (Restringir la longitud de los nombres externos)

Obsoleto. Restringe la longitud de los nombres externos.

Sintaxis

/Hnumber

Argumentos

number
Especifica la longitud máxima de los nombres externos permitidos en un programa.

Comentarios

De manera predeterminada, la longitud de los nombres externos (públicos) es de 2047 caracteres. Esto es válido para los programas de C y C++. El uso de /H solo puede disminuir la longitud máxima permitida de los identificadores, no aumentarla. Un espacio entre /H y el número es opcional.

Si un programa contiene los nombres externos más largos que number, se omiten los caracteres adicionales. Si compila un programa sin /H y si un identificador contiene más de 2047 caracteres, el compilador generará un Error irrecuperable C1064.

El límite de longitud incluye cualquier carácter de subrayado inicial (_) o signo de arroba (@) creado por el compilador. Estos caracteres forman parte del identificador y ocupan una ubicación importante.

  • El compilador agrega un carácter de subrayado inicial (_) a los nombres modificados por las convenciones de llamada __cdecl (valor predeterminado) y __stdcall un signo de arroba (@) a los nombres modificados por la convención de llamada__fastcall.

  • El compilador anexa la información del tamaño de argumento a los nombres modificados por las convenciones de llamada __fastcall y __stdcall y agrega la información de tipo a los nombres de C++.

Puede que le resulte útil /H:

  • Cuando se crean programas portables o de lenguaje mixto.

  • Cuando se usan las herramientas que imponen los límites de la longitud de los identificadores externos.

  • Cuando quiera restringir la cantidad de espacio que usan los símbolos en una compilación de depuración.

En el ejemplo siguiente se muestra cómo el uso de /H puede producir errores si las longitudes del identificador se limitan demasiado:

// 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) {}

También debe tener cuidado al usar la opción /H debido a los identificadores predefinidos del compilador. Si la longitud máxima del identificador es demasiado pequeña, algunos identificadores predefinidos quedarán sin resolver, así como determinadas llamadas a funciones de la biblioteca. Por ejemplo, si se usa la función printf y se especifica la opción /H5 en tiempo de compilación, el símbolo _prin se creará para hacer referencia a printf y esto no se encontrará en la biblioteca.

El uso de /H no es compatible con /GL (Optimización de todo el programa).

La opción /H está en desuso desde Visual Studio 2005; se han aumentado los límites de longitud máxima y ya no se necesita /H. Para ver una lista de las opciones del compilador en desuso, consulte Opciones del compilador en desuso y eliminadas en Opciones del compilador enumeradas por categoría.

Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.

  3. Escriba la opción del compilador en el cuadro Opciones adicionales.

Para establecer esta opción del compilador mediante programación

Consulte también

Opciones del compilador de MSVC
Sintaxis de la línea de comandos del compilador MSVC