data_seg
pragma
Menentukan bagian data (segmen) tempat variabel yang diinisialisasi disimpan dalam file objek (.obj).
Sintaks
#pragma data_seg(
[ "section-name" [,
"section-class" ] ])
#pragma data_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 data aktif setelah pop.
identifier
(Opsional) Saat digunakan dengan push
, menetapkan nama ke rekaman pada tumpukan kompilator internal. Saat digunakan dengan pop
, memunculkan rekaman dari tumpukan internal hingga pengidentifikasi dihapus. Jika pengidentifikasi tidak ditemukan di tumpukan internal, tidak ada yang muncul.
pengidentifikasi memungkinkan beberapa rekaman diisi dengan satu pop
perintah.
"section-name"
(Opsional) Nama bagian. Saat digunakan dengan pop
, tumpukan dimunculkan dan nama bagian menjadi nama bagian data 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 data adalah bagian yang berisi data yang diinisialisasi. Dalam artikel ini, segmen dan bagian istilah memiliki arti yang sama.
Bagian default dalam file .obj untuk variabel yang diinisialisasi adalah .data
. Variabel yang tidak diinisialisasi dianggap diinisialisasi menjadi nol dan disimpan dalam .bss
.
Direktif data_seg
pragma memberi tahu pengkompilasi untuk menempatkan semua item data yang diinisialisasi dari unit terjemahan ke dalam bagian data bernama section-name. Secara default, bagian data yang digunakan untuk data yang diinisialisasi dalam file objek diberi nama .data
. Variabel yang tidak diinisialisasi dianggap diinisialisasi menjadi nol, dan disimpan dalam .bss
. Direktif data_seg
pragma tanpa parameter nama bagian mengatur ulang nama bagian data untuk item data yang diinisialisasi berikutnya ke .data
.
Data yang dialokasikan menggunakan data_seg
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 variabel const (const_seg
), data yang tidak diinisialisasi (bss_seg
), dan fungsi (code_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_data_seg.cpp
int h = 1; // stored in .data
int i = 0; // stored in .bss
#pragma data_seg(".my_data1")
int j = 1; // stored in .my_data1
#pragma data_seg(push, stack1, ".my_data2")
int l = 2; // stored in .my_data2
#pragma data_seg(pop, stack1) // pop stack1 off the stack
int m = 3; // stored in .my_data1
int main() {
}