/H (Limita la lunghezza dei nomi esterni)
Aggiornamento: novembre 2007
Limita la lunghezza dei nomi esterni.
/Hnumber
Argomenti
- number
Specifica la lunghezza massima dei nomi esterni consentita in un programma.
Note
Per impostazione predefinita, la lunghezza dei nomi esterni (pubblici) è pari a 2.047 caratteri. Questo limite è valido per i programmi C e C++. L'utilizzo di /H consente di ridurre la lunghezza massima consentita degli identificatori, ma non di aumentarla. Uno spazio tra /H e number è facoltativo.
Se un programma contiene nomi esterni più lunghi di number, i caratteri supplementari verranno ignorati. Se si compila un programma senza /H e se un identificatore contiene più di 2.047 caratteri, verrà generato Errore irreversibile C1064.
Il limite di lunghezza include qualsiasi carattere di sottolineatura (_) o simbolo di chiocciola (@) iniziale creato dal compilatore. Tali caratteri fanno parte dell'identificatore e assumono una posizione significativa.
Il compilatore aggiunge un carattere di sottolineatura (_) iniziale ai nomi modificati dalle convenzioni di chiamata __cdecl (predefinita) e __stdcall e un simbolo di chiocciola (@) iniziale ai nomi modificati dalla convenzione di chiamata __fastcall.
Il compilatore aggiunge informazioni sulla dimensione degli argomenti ai nomi modificati dalle convenzioni di chiamata __fastcall e __stdcall e aggiunge informazioni sui tipi ai nomi C++.
L'opzione /H può essere utile nei casi riportati di seguito:
Quando si creano programmi dal linguaggio misto o portabili.
Quando si utilizzano strumenti che impongono dei limiti alla lunghezza degli identificatori esterni.
Quando si desidera limitare la quantità di spazio utilizzata dai simboli in una generazione di debug.
Nell'esempio riportato di seguito viene illustrato in che modo l'utilizzo di /H può comportare errori se le lunghezze degli identificatori presentano limiti eccessivamente restrittivi:
// 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) {}
È inoltre necessario utilizzare con cautela l'opzione /H a causa degli identificatori del compilatore predefiniti. Se la lunghezza massima dell'identificatore è troppo limitata, alcuni identificatori predefiniti non verranno risolti così come alcune chiamate di funzione della libreria. Se, ad esempio, viene utilizzata la funzione printf e in fase di compilazione si specifica l'opzione /H5, verrà creato il simbolo _prin per fare riferimento a printf ma quest'ultimo non verrà trovato nella libreria.
L'utilizzo di /H non è compatibile con /GL (Ottimizzazione intero programma).
L'opzione /H è obsoleta in Visual C++ 2005. Dal momento che i limiti di lunghezza massima sono stati aumentati, /H non è più necessaria. Per ulteriori informazioni, vedere Opzioni del compilatore obsolete in Visual C++ 2005.
Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Procedura: aprire le pagine delle proprietà dei progetti.
Fare clic sulla cartella C/C++.
Fare clic sulla pagina delle proprietà Riga di comando.
Digitare l'opzione del compilatore nella casella Opzioni aggiuntive.
Per impostare l'opzione del compilatore a livello di codice
- Vedere la proprietà AdditionalOptions.