/H (Länge externer Namen beschränken)
Aktualisiert: November 2007
Beschränkt die Länge externer Namen.
/Hnumber
Argumente
- number
die maximal zulässige Länge von externen Namen in einem Programm.
Hinweise
Standardmäßig ist die Länge externer (öffentlicher) Namen auf 2.047 Zeichen beschränkt. Dies gilt für C- und C++-Programme. Mit /H kann die maximal zulässige Länge von Bezeichnern nur herabgesetzt, nicht erhöht werden. Ein Leerzeichen zwischen /H und number ist optional.
Enthält ein Programm Namen mit mehr Zeichen als in number angegeben, werden die zusätzlichen Zeichen nicht beachtet. Wenn Sie ein Programm ohne /H kompilieren und ein Bezeichner mehr als 2.047 Zeichen enthält, gibt der Compiler den Fehler Schwerwiegender Fehler C1064 aus.
Die beschränkte Länge schließt alle vom Compiler erstellten führenden Unterstriche (_) oder @-Zeichen ein. Diese Zeichen gehören zum Bezeichner und nehmen einen wichtigen Platz ein.
Der Compiler ergänzt Namen, die mit den Aufrufkonventionen __cdecl (Standard) und __stdcall geändert worden sind, mit einem führenden Unterstrich (_) und Namen, die mit der Aufrufkonvention __fastcall geändert worden sind, mit einem führenden @-Zeichen.
Der Compiler hängt Informationen über die Argumentgröße an Namen an, die mit den Aufrufkonventionen __fastcall und __stdcall geändert worden sind, und ergänzt C++-Namen um Typinformationen.
/H ist in folgenden Fällen sinnvoll:
Beim Erstellen von Programmen in mehreren Sprachen oder portablen Programmen;
beim Einsatz von Tools, die die Länge von externen Bezeichnern beschränken;
wenn Sie den Platz begrenzen möchten, die Symbole in einem Debugbuild einnehmen.
Im folgenden Beispiel sehen Sie, wie durch die Verwendung von /H Fehler entstehen können, wenn die Bezeichnerlängen zu sehr beschränkt werden:
// 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) {}
Vorsicht beim Angeben der /H-Option ist auch aufgrund vordefinierter Compilerbezeichner geboten. Ist die maximale Bezeichnerlänge zu gering, werden bestimmte vordefinierte Bezeichner nicht aufgelöst, ebenso wie bestimmte Funktionsaufrufe an Bibliotheken. Wenn beispielsweise die printf-Funktion verwendet wird und beim Kompilieren die Option /H5 festgelegt wird, wird das Symbol _prin als Verweis auf printf erstellt. Diese kann in der Bibliothek jedoch nicht gefunden werden.
/H ist nicht mit /GL (Optimierung des ganzen Programms) kompatibel.
/H ist in Visual C++ 2005 veraltet. Die maximale Länge wurde erhöht, und /H wird nicht mehr benötigt. Weitere Informationen finden Sie unter Veraltete Compileroptionen in Visual C++ 2005.
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.
Klicken Sie auf den Ordner C/C++.
Klicken Sie auf die Eigenschaftenseite für die Befehlszeile.
Geben Sie die Compileroption im Feld Zusätzliche Optionen ein.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe AdditionalOptions.