Udostępnij za pośrednictwem


/ORDER (Ustaw funkcje w kolejności)

Określ kolejność łączy dla oddzielnie spakowanych funkcji (COMDAT).

Składnia

/ORDER:@nazwa_pliku

Parametry

filename
Plik tekstowy określający kolejność łączy dla funkcji COMDAT.

Uwagi

Opcja /ORDER kompilatora umożliwia optymalizację zachowania stronicowania programu przez grupowanie funkcji wraz z funkcjami, które wywołuje. Można również grupować często nazywane funkcje razem. Te techniki, znane jako dostrajanie zamiany lub optymalizacja stronicowania, zwiększają prawdopodobieństwo, że wywołana funkcja jest w pamięci, gdy jest potrzebna i nie musi być stronicowana z dysku.

Podczas kompilowania kodu źródłowego do pliku obiektu można poinformować kompilator, aby umieścić każdą funkcję we własnej sekcji o nazwie COMDAT przy użyciu /Gy (Włącz łączenie na poziomie funkcji) opcji kompilatora. Opcja konsolidatora /ORDER informuje konsolidatora, aby umieścić COMDATs w obraz wykonywalny w określonej kolejności.

Aby określić kolejność COMDAT, utwórz plik odpowiedzi, plik tekstowy, który wyświetla listę każdego comDAT według nazwy, jeden na wiersz, w kolejności, w której mają zostać umieszczone przez konsolidator. Przekaż nazwę tego pliku jako parametr nazwy pliku /ORDER opcji. W przypadku funkcji języka C++ nazwa comDAT jest ozdobioną formą nazwy funkcji. Użyj nazwy nieukodowanej dla funkcji języka C, maini dla funkcji języka C++ zadeklarowanych jako extern "C". W nazwach funkcji i nazwach ozdobionych uwzględniana jest wielkość liter. Aby uzyskać więcej informacji na temat nazw ozdobionych, zobacz Nazwy ozdobione.

Aby znaleźć nazwy ozdobione sieci COMDATs, użyj opcji /SYMBOLS narzędzia DUMPBIN w pliku obiektu. Konsolidator automatycznie poprzedza podkreślenie (_) nazwami funkcji w pliku odpowiedzi, chyba że nazwa rozpoczyna się od znaku zapytania (?) lub znaku (@). Na przykład jeśli plik źródłowy, example.cpp, zawiera funkcje int cpp_func(int)extern "C" int c_func(int) i int main(void), polecenie DUMPBIN /SYMBOLS example.obj wyświetla następujące nazwy ozdobione:

...
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
...

W takim przypadku określ nazwy jako ?cpp_func@@YAHH@Z, c_funci main w pliku odpowiedzi.

Jeśli w opcjach konsolidatora pojawi się więcej niż jedna opcja /ORDER , ostatni określony zostanie zastosowany.

Opcja /ORDER wyłącza łączenie przyrostowe. Może zostać wyświetlone ostrzeżenie konsolidatora LNK4075 po określeniu tej opcji, jeśli włączono łączenie przyrostowe lub jeśli określono opcję kompilatora /ZI (przyrostowy plik PDB). Aby wyciszyć to ostrzeżenie, możesz użyć opcji /INCREMENTAL:NO konsolidatora, aby wyłączyć łączenie przyrostowe i użyć opcji kompilatora /Zi (Generuj PDB) w celu wygenerowania pliku PDB bez łączenia przyrostowego.

Uwaga

Link nie może porządkować funkcji statycznych, ponieważ nazwy funkcji statycznych nie są nazwami symboli publicznych. Po określeniu /ORDER ostrzeżenie konsolidatora LNK4037 jest generowane dla każdego symbolu w pliku odpowiedzi zamówienia, który jest statyczny lub nie znaleziono.

Aby ustawić tę opcję konsolidatora 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 Optymalizacji konsolidatora właściwości>konsolidatora> konfiguracji.

  3. Zmodyfikuj właściwość Order funkcji, aby zawierała nazwę pliku odpowiedzi.

Aby programowo ustawić tę opcję konsolidatora

Zobacz też

Dokumentacja konsolidatora MSVC
Opcje konsolidatora MSVC