__declspec
Khusus Microsoft
Sintaks atribut yang diperluas untuk menentukan informasi kelas penyimpanan menggunakan __declspec
kata kunci, yang menentukan bahwa instans jenis tertentu akan disimpan dengan atribut kelas penyimpanan khusus Microsoft yang tercantum di bawah ini. Contoh pengubah kelas penyimpanan lainnya termasuk kata kunci static
dan extern
. Namun, kata kunci ini adalah bagian dari spesifikasi ANSI dari bahasa C dan C++, dan karenanya tidak tercakup oleh sintaks atribut yang diperluas. Sintaks atribut yang diperluas menyederhanakan dan menstandarkan ekstensi khusus Microsoft ke bahasa C dan C++.
Tatabahasa
decl-specifier
:
__declspec (
extended-decl-modifier-seq
)
extended-decl-modifier-seq
:
extended-decl-modifier
opt
extended-decl-modifier
extended-decl-modifier-seq
extended-decl-modifier
:
align(
number)
allocate("
segname")
allocator
appdomain
code_seg("
segname")
deprecated
dllimport
dllexport
empty_bases
jitintrinsic
naked
noalias
noinline
noreturn
nothrow
novtable
no_sanitize_address
process
property(
{ get=
get-func-name,put=
| put-func-name })
restrict
safebuffers
selectany
spectre(nomitigation)
thread
uuid("
ComObjectGUID")
Spasi putih memisahkan urutan pengubah deklarasi. Contoh muncul di bagian selanjutnya.
Tata bahasa atribut yang diperluas mendukung atribut kelas penyimpanan khusus Microsoft ini: align
, , , nothrow
allocate
novtable
noreturn
allocator
dllimport
empty_bases
deprecated
dllexport
jitintrinsic
code_seg
naked
process
noinline
appdomain
noalias
no_sanitize_address
, , restrict
, safebuffers
, , selectany
, , spectre
dan .thread
Ini juga mendukung atribut objek COM ini: property
dan uuid
.
Atribut code_seg
kelas penyimpanan , , dllexport
, noalias
nothrow
dllimport
naked
empty_bases
no_sanitize_address
, restrict
selectany
property
, thread
, , dan uuid
adalah properti hanya dari deklarasi objek atau fungsi yang diterapkan. Atribut thread
hanya memengaruhi data dan objek. Atribut naked
dan spectre
hanya memengaruhi fungsi. Atribut dllimport
dan dllexport
memengaruhi fungsi, data, dan objek. Atribut property
, selectany
, dan uuid
memengaruhi objek COM.
Untuk kompatibilitas dengan versi sebelumnya, _declspec
adalah sinonim kecuali __declspec
opsi /Za
pengompilasi (Nonaktifkan ekstensi bahasa) ditentukan.
Kata __declspec
kunci harus ditempatkan di awal deklarasi sederhana. Pengkompilasi mengabaikan, tanpa peringatan, kata kunci apa pun __declspec
yang ditempatkan setelah * atau & dan di depan pengidentifikasi variabel dalam deklarasi.
__declspec
Atribut yang ditentukan di awal deklarasi jenis yang ditentukan pengguna berlaku untuk variabel jenis tersebut. Misalnya:
__declspec(dllimport) class X {} varX;
Dalam hal ini, atribut berlaku untuk varX
. Atribut __declspec
yang ditempatkan setelah class
kata kunci atau struct
berlaku untuk jenis yang ditentukan pengguna. Misalnya:
class __declspec(dllimport) X {};
Dalam hal ini, atribut berlaku untuk X
.
Pedoman umum untuk menggunakan __declspec
atribut untuk deklarasi sederhana adalah sebagai berikut:
decl-specifier-seq
init-declarator-list
;
harus decl-specifier-seq
berisi, antara lain, jenis dasar (misalnya, int
, , float
, typedef
atau nama kelas), kelas penyimpanan (misalnya, static
, extern
), atau __declspec
ekstensi. yang init-declarator-list
harus berisi, antara lain, bagian pointer dari deklarasi. Misalnya:
__declspec(selectany) int * pi1 = 0; //Recommended, selectany & int both part of decl-specifier
int __declspec(selectany) * pi2 = 0; //OK, selectany & int both part of decl-specifier
int * __declspec(selectany) pi3 = 0; //ERROR, selectany is not part of a declarator
Kode berikut mendeklarasikan variabel lokal utas bilangan bulat dan menginisialisasinya dengan nilai:
// Example of the __declspec keyword
__declspec( thread ) int tls_i = 1;
END Khusus Microsoft
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk