Freigeben über


/H (Länge externer Namen beschränken)

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 veraltet. Die maximale Länge wurde erhöht, und /H wird nicht mehr benötigt. Weitere Informationen finden Sie unter Deprecated Compiler Options.

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Gewusst wie: Öffnen von Projekteigenschaftenseiten.

  2. Klicken Sie auf den Ordner C/C++.

  3. Klicken Sie auf die Eigenschaftenseite Befehlszeile.

  4. Geben Sie die Compileroption im Feld Zusätzliche Optionen ein.

So legen Sie diese Compileroption programmgesteuert fest

Siehe auch

Referenz

Compileroptionen

Festlegen von Compileroptionen