Share via


/H (Limiter la longueur des noms externes)

Action déconseillée. Limite la longueur des noms externes.

Syntaxe

/Hnumber

Arguments

numéro
Spécifie la longueur maximale des noms externes autorisés dans un programme.

Notes

Par défaut, la longueur des noms externes (publics) est de 2 047 caractères. Cela est vrai pour les programmes C et C++. L’utilisation de /H ne peut diminuer que la longueur maximale autorisée des identificateurs, et non l’augmenter. Un espace entre /H et nombre est facultatif.

Si un programme contient des noms externes plus longs que le nombre, les caractères supplémentaires sont ignorés. Si vous compilez un programme sans /H et si un identificateur contient plus de 2 047 caractères, le compilateur génère une erreur irrécupérable C1064.

La limite de longueur inclut tout trait de soulignement de début créé par le compilateur (_) ou au signe (@). Ces caractères font partie de l’identificateur et prennent un emplacement significatif.

  • Le compilateur ajoute un trait de soulignement (_) de début aux noms modifiés par les __cdecl conventions d’appel (par défaut) et __stdcall un signe de début (@) aux noms modifiés par la __fastcall convention d’appel.

  • Le compilateur ajoute des informations de taille d’argument aux noms modifiés par les __fastcall conventions d’appel et __stdcall ajoute des informations de type aux noms C++.

Vous pouvez trouver /H utile :

  • Lorsque vous créez des programmes de langage mixte ou portable.

  • Lorsque vous utilisez des outils qui imposent des limites sur la longueur des identificateurs externes.

  • Lorsque vous souhaitez limiter la quantité d’espace que les symboles utilisent dans une build de débogage.

L’exemple suivant montre comment utiliser /H peut réellement introduire des erreurs si les longueurs d’identificateur sont trop limitées :

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

Vous devez également faire attention lors de l’utilisation de l’option /H en raison d’identificateurs de compilateur prédéfinis. Si la longueur maximale de l’identificateur est trop petite, certains identificateurs prédéfinis ne sont pas résolus, ainsi que certains appels de fonction de bibliothèque. Par exemple, si la fonction est utilisée et que l’option /H5 est spécifiée au moment de la printf compilation, le symbole _prin sera créé pour printfréférencer, et cela ne se trouve pas dans la bibliothèque.

L’utilisation de /H est incompatible avec /GL (Qui le Program Optimization).

L’option /H est déconseillée depuis Visual Studio 2005 ; les limites de longueur maximale ont été augmentées et /H n’est plus nécessaire. Pour obtenir la liste des options de compilateur déconseillées, consultez Options de compilateur déconseillées et supprimées dans les options du compilateur répertoriées par catégorie.

Pour définir cette option du compilateur dans l'environnement de développement Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.

  3. Entrez l’option du compilateur dans la zone Options supplémentaires.

Pour définir cette option du compilateur par programmation

Voir aussi

Options du compilateur MSVC
Syntaxe de la ligne de commande du compilateur MSVC