Share via


/ORDER (Inserisce le funzioni in ordine)

Specificare l'ordine di collegamento per le funzioni COMDAT (Packagedd) separate.

Sintassi

/ORDER:@filename

Parametri

filename
File di testo che specifica l'ordine di collegamento per le funzioni COMDAT.

Osservazioni:

L'opzione del compilatore /ORDER consente di ottimizzare il comportamento di paging del programma raggruppando una funzione insieme alle funzioni chiamate. È anche possibile raggruppare le funzioni chiamate di frequente. Queste tecniche, note come ottimizzazione dello scambio o paging, aumentano la probabilità che una funzione chiamata sia in memoria quando è necessaria e non deve essere sottoposta a paging dal disco.

Quando si compila il codice sorgente in un file oggetto, è possibile indicare al compilatore di inserire ogni funzione nella propria sezione, denominata COMDAT, usando l'opzione del compilatore /Gy (Abilita collegamento a livello di funzione). L'opzione del linker /ORDER indica al linker di inserire i FILE COMDAT nell'immagine eseguibile nell'ordine specificato.

Per specificare l'ordine COMDAT, creare un file di risposta, un file di testo che elenca ogni COMDAT per nome, uno per riga, nell'ordine in cui si desidera che vengano inseriti dal linker. Passare il nome di questo file come parametro filename dell'opzione /ORDER . Per le funzioni C++, il nome di un COMDAT è la forma decorata del nome della funzione. Usare il nome non dichiarato per le funzioni C, maine per le funzioni C++ dichiarate come extern "C". I nomi delle funzioni e i nomi decorati fanno distinzione tra maiuscole e minuscole. Per altre informazioni sui nomi decorati, vedere Decorated Names.For more information on decorated names, see Decorated Names.

Per trovare i nomi decorati dei FILE COMDAT, usare l'opzione /SYMBOLS dello strumento DUMPBIN nel file oggetto. Il linker antepone automaticamente un carattere di sottolineatura (_) ai nomi delle funzioni nel file di risposta, a meno che il nome non inizi con un punto interrogativo (?) o con il segno (@). Ad esempio, se un file di origine, example.cpp, contiene funzioni int cpp_func(int)extern "C" int c_func(int) e int main(void), il comando DUMPBIN /SYMBOLS example.obj elenca questi nomi decorati:

...
088 00000000 SECT1A notype ()    External     | ?cpp_func@@YAHH@Z (int __cdecl cpp_func(int))
089 00000000 SECT22 notype ()    External     | _c_func
08A 00000000 SECT24 notype ()    External     | _main
...

In questo caso, specificare i nomi come ?cpp_func@@YAHH@Z, c_funce main nel file di risposta.

Se nelle opzioni del linker vengono visualizzate più opzioni /ORDER , l'ultima opzione specificata diventa effettiva.

L'opzione /ORDER disabilita il collegamento incrementale. È possibile che venga visualizzato un avviso del linker LNK4075 quando si specifica questa opzione se è abilitato il collegamento incrementale o se è stata specificata l'opzione del compilatore /ZI (Incremental PDB). Per disattivare questo avviso, è possibile usare l'opzione del linker /INCREMENTAL:NO per disattivare il collegamento incrementale e usare l'opzione del compilatore /Zi (Genera PDB) per generare un PDB senza collegamento incrementale.

Nota

LINK non può ordinare funzioni statiche perché i nomi delle funzioni statiche non sono nomi di simboli pubblici. Quando si specifica /ORDER , viene generato l'avviso del linker LNK4037 per ogni simbolo nel file di risposta dell'ordine che è statico o non trovato.

Per impostare questa opzione del linker nell'ambiente di sviluppo di Visual Studio

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.

  2. Selezionare la pagina delle proprietà Ottimizzazione linker>proprietà Proprietà>di configurazione.

  3. Modificare la proprietà Function Order per contenere il nome del file di risposta.

Per impostare l'opzione del linker a livello di codice

Vedi anche

Informazioni di riferimento sul linker MSVC
Opzioni del linker MSVC