/H (Ograniczaj długość nazw zewnętrznych)

Przestarzałe. Ogranicza długość nazw zewnętrznych.

Składnia

/Hnumber

Argumenty

Numer
Określa maksymalną długość nazw zewnętrznych dozwolonych w programie.

Uwagi

Domyślnie długość nazw zewnętrznych (publicznych) wynosi 2047 znaków. Dotyczy to programów C i C++. Użycie /H może zmniejszyć maksymalną dozwoloną długość identyfikatorów, a nie zwiększyć go. Odstęp między /H i liczba jest opcjonalny.

Jeśli program zawiera nazwy zewnętrzne dłuższe niż liczba, dodatkowe znaki są ignorowane. Jeśli skompilujesz program bez /H i jeśli identyfikator zawiera więcej niż 2047 znaków, kompilator wygeneruje błąd krytyczny C1064.

Limit długości obejmuje wszystkie utworzone przez kompilator wiodące podkreślenie (_) lub pod znakiem (@). Te znaki są częścią identyfikatora i przyjmują znaczącą lokalizację.

  • Kompilator dodaje wiodący znak podkreślenia (_) do nazw zmodyfikowanych przez __cdecl (domyślne) i __stdcall konwencje wywoływania oraz wiodący znak (@) do nazw zmodyfikowanych przez konwencję wywołującą __fastcall .

  • Kompilator dołącza informacje o rozmiarze argumentów do nazw zmodyfikowanych przez __fastcall konwencje wywoływania i __stdcall i dodaje informacje o typie do nazw języka C++.

Przydatne może być /H :

  • Podczas tworzenia programów mieszanych lub przenośnych.

  • W przypadku używania narzędzi, które nakładają limity na długość identyfikatorów zewnętrznych.

  • Jeśli chcesz ograniczyć ilość miejsca używanego przez symbole w kompilacji debugowania.

W poniższym przykładzie pokazano, jak użycie /H może rzeczywiście wprowadzać błędy, jeśli długość identyfikatora jest ograniczona zbyt wiele:

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

Należy również zachować ostrożność podczas korzystania z /H opcji z powodu wstępnie zdefiniowanych identyfikatorów kompilatora. Jeśli maksymalna długość identyfikatora jest zbyt mała, niektóre wstępnie zdefiniowane identyfikatory zostaną nierozwiązane, a także niektóre wywołania funkcji biblioteki. Jeśli na przykład printf funkcja jest używana, a opcja /H5 jest określona w czasie kompilacji, symbol _prin zostanie utworzony w celu odwołania printfsię do elementu i nie zostanie on znaleziony w bibliotece.

Użycie /H jest niezgodne z /GL (KtoTo le Program Optimization).

/H opcja jest przestarzała od programu Visual Studio 2005; maksymalne limity długości zostały zwiększone i /H nie jest już potrzebny. Aby uzyskać listę przestarzałych opcji kompilatora, zobacz Przestarzałe i usunięte opcje kompilatora w opcjach kompilatora wymienionych według kategorii.

Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio

  1. Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).

  2. Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.

  3. Wprowadź opcję kompilatora w polu Dodatkowe opcje .

Aby programowo ustawić tę opcję kompilatora

Zobacz też

Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC