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 pushkullanıldığında, iç derleyici yığınındaki kayda bir ad atar. ile popkullanı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 popkullanı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_segpragma, 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_segpragma Bölüm adı parametresi olmayan bir yönerge, sonraki nesne kodunun metin bölümü adını olarak .textsıfırlar.

yönergesi code_segpragma , ö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_segbss_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