/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 printf
się do elementu i nie zostanie on znaleziony w bibliotece.
Użycie /H jest niezgodne z /GL (Optymalizacja całego programu).
/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
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).
Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.
Wprowadź opcję kompilatora w polu Dodatkowe opcje .
Aby programowo ustawić tę opcję kompilatora
- Zobacz: AdditionalOptions.
Zobacz też
Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC