const_seg
pragma
Const değişkenlerinin nesne (.obj) dosyasında depolandığı bölümü (segment) belirtir.
Sözdizimi
#pragma const_seg(
[ "section-name" [,
"section-class" ] ])
#pragma const_seg(
{push
|pop
} [,
identifier ] [,
"section-name" [,
"section-class" ] ])
Parametreler
push
(İsteğe bağlı) İç derleyici yığınına bir kayıt yerleştirir. bir push
tanımlayıcıya ve bölüm adına sahip olabilir.
pop
(İsteğe bağlı) İç derleyici yığınının üst kısmından bir kaydı kaldırır. bir pop
tanımlayıcıya ve bölüm adına sahip olabilir. Tanımlayıcıyı kullanarak tek bir pop
komut kullanarak birden çok kaydı açabilirsiniz. Bölüm adı , pop'un ardından etkin sabit bölüm adı olur.
identifier
(İsteğe bağlı) ile push
kullanıldığında, iç derleyici yığınındaki kayda bir ad atar. ile pop
kullanıldığında yönergesi, tanımlayıcı kaldırılana kadar iç yığındaki kayıtları açar. Tanımlayıcı iç yığında bulunmazsa hiçbir şey gösterilmez.
"section-name"
(İsteğe bağlı) Bölümün adı. ile pop
kullanıldığında, yığın açılır ve bölüm adı etkin const bölüm adı olur.
"section-class"
(İsteğe bağlı) Yoksayılır, ancak 2.0 sürümünden önceki Microsoft C++ sürümleriyle uyumluluk için dahil edilir.
Açıklamalar
Nesne dosyasındaki bölüm, belleğe birim olarak yüklenen adlandırılmış bir veri bloğudur. Const bölümü, sabit veriler içeren bir bölümdür. Bu makalede, segment ve bölüm terimleri aynı anlama sahiptir.
yönergesiconst_seg
pragma, derleyiciye çeviri ünitesindeki tüm sabit veri öğelerini section-name adlı bir const bölümüne yerleştirmesini söyler. Değişkenler için const
nesne dosyasındaki varsayılan bölüm şeklindedir .rdata
. Skalerler gibi bazı const
değişkenler otomatik olarak kod akışının içine alınır. Inlined code içinde .rdata
görünmez. const_seg
pragma Bölüm adı parametresi olmayan bir yönerge, sonraki const
veri öğelerinin bölüm adını olarak .rdata
sıfırlar.
içinde dinamik başlatma const_seg
gerektiren bir nesne tanımlarsanız, sonuç tanımlanmamış bir davranıştır.
Bölüm oluşturmak için kullanılmaması gereken adların listesi için bkz /SECTION
. .
Ayrıca, başlatılan veriler (), başlatılmamış veriler (data_seg
) ve işlevler (bss_seg
code_seg
) için bölümler belirtebilirsiniz.
Nesne dosyalarını görüntülemek için DUMPBIN.EXE uygulamasını kullanabilirsiniz. Desteklenen her hedef mimari için DUMPBIN sürümleri Visual Studio'ya eklenir.
Örnek
// pragma_directive_const_seg.cpp
// compile with: /EHsc
#include <iostream>
const int i = 7; // inlined, not stored in .rdata
const char sz1[]= "test1"; // stored in .rdata
#pragma const_seg(".my_data1")
const char sz2[]= "test2"; // stored in .my_data1
#pragma const_seg(push, stack1, ".my_data2")
const char sz3[]= "test3"; // stored in .my_data2
#pragma const_seg(pop, stack1) // pop stack1 from stack
const char sz4[]= "test4"; // stored in .my_data1
int main() {
using namespace std;
// const data must be referenced to be put in .obj
cout << sz1 << endl;
cout << sz2 << endl;
cout << sz3 << endl;
cout << sz4 << endl;
}
test1
test2
test3
test4
Ayrıca bkz.
Pragma yönergeleri ve __pragma
ve _Pragma
anahtar sözcükleri