Bagikan melalui


code_seg pragma

Menentukan bagian teks (segmen) tempat fungsi disimpan dalam file objek (.obj).

Sintaks

#pragma code_seg( [ "section-name" [ , "section-class" ] ] )
#pragma code_seg( { push | pop } [ ,pengidentifikasi ] [ , "section-name" [ , "section-class" ] ] )

Parameter

push
(Opsional) Menempatkan rekaman pada tumpukan kompilator internal. Dapat push memiliki pengidentifikasi dan nama bagian.

pop
(Opsional) Menghapus rekaman dari bagian atas tumpukan pengkompilasi internal. Dapat pop memiliki pengidentifikasi dan nama bagian. Anda dapat memunculkan beberapa rekaman hanya menggunakan satu pop perintah dengan menggunakan pengidentifikasi. Nama bagian menjadi nama bagian teks aktif setelah pop.

identifier
(Opsional) Saat digunakan dengan push, menetapkan nama ke rekaman pada tumpukan kompilator internal. Saat digunakan dengan pop, direktif akan memunculkan rekaman dari tumpukan internal hingga pengidentifikasi dihapus. Jika pengidentifikasi tidak ditemukan di tumpukan internal, tidak ada yang muncul.

"section-name"
(Opsional) Nama bagian. Saat digunakan dengan pop, tumpukan dimunculkan dan nama bagian menjadi nama bagian teks aktif.

"section-class"
(Opsional) Diabaikan, tetapi disertakan untuk kompatibilitas dengan versi Microsoft C++ yang lebih lama dari versi 2.0.

Keterangan

Bagian dalam file objek adalah blok data bernama yang dimuat ke dalam memori sebagai unit. Bagian teks adalah bagian yang berisi kode yang dapat dieksekusi. Dalam artikel ini, segmen dan bagian istilah memiliki arti yang sama.

Direktif code_segpragma memberi tahu pengkompilasi untuk menempatkan semua kode objek berikutnya dari unit terjemahan ke dalam bagian teks bernama section-name. Secara default, bagian teks yang digunakan untuk fungsi dalam file objek bernama .text. Direktif code_segpragma tanpa parameter nama bagian mengatur ulang nama bagian teks untuk kode objek berikutnya ke .text.

Direktif code_segpragma tidak mengontrol penempatan kode objek yang dihasilkan untuk templat yang dibuat. Juga tidak mengontrol kode yang dihasilkan secara implisit oleh pengkompilasi, seperti fungsi anggota khusus. Untuk mengontrol kode tersebut, kami sarankan Anda menggunakan atribut sebagai gantinya __declspec(code_seg(...)) . Ini memberi Anda kontrol atas penempatan semua kode objek, termasuk kode yang dihasilkan kompilator.

Untuk daftar nama yang seharusnya tidak digunakan untuk membuat bagian, lihat /SECTION.

Anda juga dapat menentukan bagian untuk data yang diinisialisasi (data_seg), data yang tidak diinisialisasi (bss_seg), dan variabel const (const_seg).

Anda dapat menggunakan aplikasi DUMPBIN.EXE untuk melihat file objek. Versi DUMPBIN untuk setiap arsitektur target yang didukung disertakan dengan Visual Studio.

Contoh

Contoh ini menunjukkan cara menggunakan direktif code_segpragma untuk mengontrol tempat kode objek diletakkan:

// pragma_directive_code_seg.cpp
void func1() {                  // stored in .text
}

#pragma code_seg(".my_data1")
void func2() {                  // stored in my_data1
}

#pragma code_seg(push, r1, ".my_data2")
void func3() {                  // stored in my_data2
}

#pragma code_seg(pop, r1)      // stored in my_data1
void func4() {
}

int main() {
}

Baca juga

code_seg (__declspec)
Arahan Pragma dan __pragma_Pragma kata kunci