Bagikan melalui


/ORDER (Letakkan Fungsi dalam Urutan)

Tentukan urutan tautan untuk fungsi yang dipaketkan secara terpisah (COMDAT).

Sintaks

/ORDER:@filename

Parameter

filename
File teks yang menentukan urutan tautan untuk fungsi COMDAT.

Keterangan

Opsi pengkompilasi /ORDER memungkinkan Anda mengoptimalkan perilaku halaman program Anda dengan mengelompokkan fungsi bersama dengan fungsi yang dipanggilnya. Anda juga dapat mengelompokkan fungsi yang sering disebut bersama-sama. Teknik-teknik ini, yang dikenal sebagai penyetelan pertukaran atau pengoptimalan halaman, meningkatkan probabilitas bahwa fungsi yang disebut berada dalam memori ketika diperlukan dan tidak harus di-paged dari disk.

Saat Mengkompilasi kode sumber ke dalam file objek, Anda dapat memberi tahu pengkompilasi untuk memasukkan setiap fungsi ke bagiannya sendiri, yang disebut COMDAT, dengan menggunakan opsi pengkompilasi /Gy (Aktifkan penautan tingkat fungsi). Opsi linker /ORDER memberi tahu linker untuk menempatkan COMDAT ke dalam gambar yang dapat dieksekusi dalam urutan yang Anda tentukan.

Untuk menentukan urutan COMDAT, buat file respons, file teks yang mencantumkan setiap COMDAT berdasarkan nama, satu per baris, dalam urutan yang Anda inginkan untuk ditempatkan oleh linker. Berikan nama file ini sebagai parameter nama file dari opsi /ORDER . Untuk fungsi C++, nama COMDAT adalah bentuk nama fungsi yang dihiasi. Gunakan nama yang tidak terdekorasi untuk fungsi C, main, dan untuk fungsi C++ yang dinyatakan sebagai extern "C". Nama fungsi dan nama yang didekorasi peka huruf besar/kecil. Untuk informasi selengkapnya tentang nama yang didekorasi, lihat Nama yang Didekorasi.

Untuk menemukan nama COMDAT yang didekorasi, gunakan opsi /SYMBOLS alat DUMPBIN pada file objek. Linker secara otomatis menambahkan garis bawah (_) ke nama fungsi dalam file respons kecuali nama dimulai dengan tanda tanya (?) atau tanda tangan (@). Misalnya, jika file sumber, example.cpp, berisi fungsi int cpp_func(int), extern "C" int c_func(int) dan int main(void), perintah DUMPBIN /SYMBOLS example.obj mencantumkan nama yang didekorasi ini:

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

Dalam hal ini, tentukan nama sebagai ?cpp_func@@YAHH@Z, c_func, dan main dalam file respons Anda.

Jika lebih dari satu opsi /ORDER muncul di opsi linker, opsi terakhir yang ditentukan akan berlaku.

Opsi /ORDER menonaktifkan penautan inkremental. Anda mungkin melihat peringatan linker LNK4075 ketika Anda menentukan opsi ini jika penautan inkremental diaktifkan, atau jika Anda telah menentukan opsi pengkompilasi /ZI (PDB Inkremental). Untuk membungkam peringatan ini, Anda dapat menggunakan opsi /INCREMENTAL:NO linker untuk menonaktifkan penautan bertahap, dan menggunakan opsi pengkompilasi /Zi (Hasilkan PDB) untuk menghasilkan PDB tanpa penautan bertahap.

Catatan

LINK tidak dapat mengurutkan fungsi statis karena nama fungsi statis bukan nama simbol publik. Ketika /ORDER ditentukan, peringatan linker LNK4037 dihasilkan untuk setiap simbol dalam file respons pesanan yang statis atau tidak ditemukan.

Untuk mengatur opsi linker ini di lingkungan pengembangan Visual Studio

  1. Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.

  2. Pilih halaman properti Pengoptimalan Linker>Properti>Konfigurasi.

  3. Ubah properti Urutan Fungsi untuk berisi nama file respons Anda.

Untuk menyetel opsi linker ini secara terprogram

Lihat juga

Referensi linker MSVC
Opsi MSVC Linker