Bagikan melalui


bss_seg pragma

Menentukan bagian (segmen) tempat variabel yang tidak diinisialisasi disimpan dalam file objek (.obj).

Sintaks

#pragma bss_seg( [ "section-name" [ , "section-class" ] ] )
#pragma bss_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 BSS 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 BSS 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 BSS adalah bagian yang berisi data yang tidak diinisialisasi. Dalam artikel ini, segmen dan bagian istilah memiliki arti yang sama.

Direktif bss_segpragma memberi tahu pengkompilasi untuk menempatkan semua item data yang tidak diinisialisasi dari unit terjemahan ke bagian BSS bernama section-name. Dalam beberapa kasus, penggunaan bss_seg dapat mempercepat waktu pemuatan dengan mengelompokkan data yang tidak diinisialisasi ke dalam satu bagian. Secara default, bagian BSS yang digunakan untuk data yang tidak diinisialisasi dalam file objek diberi nama .bss. Direktif bss_segpragma tanpa parameter nama bagian mengatur ulang nama bagian BSS untuk item data yang tidak diinisialisasi berikutnya ke .bss.

Data yang bss_segpragma dialokasikan menggunakan tidak menyimpan informasi apa pun tentang lokasinya.

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

Anda juga dapat menentukan bagian untuk data yang diinisialisasi (data_seg), fungsi (code_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

// pragma_directive_bss_seg.cpp
int i;                     // stored in .bss
#pragma bss_seg(".my_data1")
int j;                     // stored in .my_data1

#pragma bss_seg(push, stack1, ".my_data2")
int l;                     // stored in .my_data2

#pragma bss_seg(pop, stack1)   // pop stack1 from stack
int m;                     // stored in .my_data1

int main() {
}

Baca juga

Arahan Pragma dan __pragma_Pragma kata kunci