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

Veraltet. Schränkt die Länge externer Namen ein.

Syntax

/H-Zahl

Argumente

Zahl
Gibt die maximale Länge externer Namen an, die in einem Programm zulässig sind.

Hinweise

Standardmäßig beträgt die Länge externer (öffentlicher) Namen 2.047 Zeichen. Dies gilt für C- und C++-Programme. Die Verwendung von /H kann nur die maximal zulässige Länge von Bezeichnern verringern und nicht erhöhen. Ein Leerzeichen zwischen /H und Zahl ist optional.

Wenn ein Programm externe Namen enthält, die länger als die Zahl sind, werden die zusätzlichen Zeichen ignoriert. Wenn Sie ein Programm ohne /H kompilieren und wenn ein Bezeichner mehr als 2.047 Zeichen enthält, generiert der Compiler den schwerwiegenden Fehler C1064.

Der Grenzwert für die Länge enthält alle vom Compiler erstellten führenden Unterstriche (_) oder das At-Sign (@). Diese Zeichen sind Teil des Bezeichners und nehmen einen wichtigen Ort ein.

  • Der Compiler fügt einen führenden Unterstrich (_) zu Namen hinzu, die von den __cdecl Konventionen (Standard) und __stdcall aufrufenden Konventionen geändert wurden, und einem führenden At-Sign (@) zu Namen, die von der __fastcall Aufrufkonvention geändert wurden.

  • Der Compiler fügt Informationen zur Argumentgröße an Namen an, die von den __fastcall Konventionen und __stdcall aufrufenden Konventionen geändert wurden, und fügt Typinformationen zu C++-Namen hinzu.

Möglicherweise finden Sie /H nützlich:

  • Wenn Sie gemischte oder tragbare Programme erstellen.

  • Wenn Sie Tools verwenden, die die Länge externer Bezeichner einschränken.

  • Wenn Sie den Abstand einschränken möchten, den Symbole in einem Debugbuild verwenden.

Das folgende Beispiel zeigt, wie die Verwendung von "/H " fehler auftreten kann, wenn die Länge der Bezeichner zu stark begrenzt ist:

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

Außerdem müssen Sie beim Verwenden der Option "/H " aufgrund vordefinierter Compilerbezeichner vorsichtig sein. Wenn die maximale Bezeichnerlänge zu klein ist, werden bestimmte vordefinierte Bezeichner nicht aufgelöst sowie bestimmte Bibliotheksfunktionsaufrufe. Wenn beispielsweise die printf Funktion verwendet wird und die Option /H5 zur Kompilierungszeit angegeben wird, wird das Symbol _prin erstellt, um auf sie zu verweisen printf, und dies wird in der Bibliothek nicht gefunden.

Die Verwendung von /H ist mit /GL (Whole Program Optimization) nicht kompatibel.

Die Option "/H " ist seit Visual Studio 2005 veraltet. Die maximalen Längenbeschränkungen wurden erhöht, und /H wird nicht mehr benötigt. Eine Liste der veralteten Compileroptionen finden Sie unter veraltete und entfernte Compileroptionen in den nach Kategorie aufgeführten Compileroptionen.

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

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).

  2. Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.

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

So legen Sie diese Compileroption programmgesteuert fest

Siehe auch

MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile