Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Baru dalam standar C23, typeof_unqual operator adalah operator unary yang mengembalikan jenis ekspresi setelah membuang kualifikasi seperti const, volatile, dan restrict. Ini dapat digunakan dalam deklarasi jenis, jenis cast, pemeriksaan jenis, dan sebagainya. Ini mendapatkan jenis variabel, fungsi, atau ekspresi C apa pun.
Kata __typeof_unqual__ kunci adalah ekstensi khusus Microsoft yang menyediakan fungsionalitas yang sama dengan typeof_unqual. Kata __typeof_unqual__ kunci berbeda dari typeof_unqual hanya karena tersedia saat mengkompilasi untuk semua versi C (bukan hanya /std:clatest), dan mungkin memudahkan kode porting antara pengkompilasi lain yang mendukung __typeof_unqual__.
typeof_unqual sintaks
typeof_unqual(type)
typeof_unqual(constant-expression)
__typeof__unqual(constant-expression)
typeof_unqual contoh
Contoh ini menggunakan typeof_unqual(), tetapi perilakunya sama jika Anda menggunakan __typeof_unqual__.
// Compile with /std:clatest and /experimental:c11atomics
#include <stdatomic.h>
// A function that takes an atomic int pointer, but uses a non-atomic copy of the value
void func(_Atomic(int) * pAtomic)
{
typeof_unqual(*pAtomic) local = *pAtomic;
// Use local non-atomic copy of value
}
int main()
{
int* const cpVar1 = 2;
typeof_unqual(cpVar1) pVar2 = 3;
pVar2 = 4; // no error because pi is not const. cpVar1 = 4 would be an error.
_Atomic(int)i = 42;
func(&i);
return 0;
}
Persyaratan
Memerlukan Visual Studio 17.9 atau yang lebih baru, atau cl.exe versi 19.39.33428 atau yang lebih baru.
Untuk menggunakan typeof_unqual, kompilasi dengan /std:clatest.