code_seg
pragma
İşlevlerin nesne (.obj) dosyasında depolandığı metin bölümünü (segment) belirtir.
Sözdizimi
#pragma code_seg(
[ "section-name" [,
"section-class" ] ])
#pragma code_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 metin 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 metin 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. Metin bölümü yürütülebilir kod içeren bir bölümdür. Bu makalede, segment ve bölüm terimleri aynı anlama sahiptir.
yönergesicode_seg
pragma, derleyiciye çeviri biriminden sonraki tüm nesne kodunu section-name adlı bir metin bölümüne yerleştirmesini söyler. Varsayılan olarak, nesne dosyasındaki işlevler için kullanılan metin bölümü olarak adlandırılır .text
. code_seg
pragma Bölüm adı parametresi olmayan bir yönerge, sonraki nesne kodunun metin bölümü adını olarak .text
sıfırlar.
yönergesi code_seg
pragma , örnek şablonlar için oluşturulan nesne kodunun yerleşimini denetlemez. Ayrıca özel üye işlevleri gibi derleyici tarafından örtük olarak oluşturulan kodu denetlemez. Bu kodu denetlemek için bunun yerine özniteliğini __declspec(code_seg(...))
kullanmanızı öneririz. Derleyici tarafından oluşturulan kod da dahil olmak üzere tüm nesne kodunun yerleşimi üzerinde denetim sağlar.
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
bss_seg
) ve const değişkenleri (const_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
Bu örnekte, nesne kodunun yerleştirildiği yeri denetlemek için code_segpragma yönergesinin nasıl kullanılacağı gösterilmektedir:
// 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() {
}
Ayrıca bkz.
code_seg (__declspec)
Pragma yönergeleri ve __pragma
ve _Pragma
anahtar sözcükleri