typeof_unqual
, __typeof_unqual__
(C23)
C23 standardında yeni olan typeof_unqual
işleç, , volatile
ve restrict
gibi const
niteleyicileri attıktan sonra bir ifadenin türünü döndüren birli işleçtir. Tür bildirimlerinde, tür atamalarında, tür denetimlerinde vb. kullanılabilir. Bir değişkenin, işlevin veya herhangi bir C ifadesinin türünü alır.
__typeof_unqual__
anahtar sözcüğü, ile aynı işlevselliği typeof_unqual
sağlayan Microsoft'a özgü bir uzantıdır. __typeof_unqual__
anahtar sözcüğü yalnızca C'nin tüm sürümleri için derlenirken (yalnızca /std:clatest
) kullanılabilir olduğundan farklıdır typeof_unqual
ve destekleyen __typeof_unqual__
diğer derleyiciler arasında kod taşımayı kolaylaştırabilir.
typeof_unqual
söz dizimi
typeof_unqual(type)
typeof_unqual(constant-expression)
__typeof__unqual(constant-expression)
typeof_unqual
örnek
Bu örnekte kullanılır typeof_unqual()
, ancak kullanırsanız __typeof_unqual__
davranış aynıdır.
// 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;
}
Gereksinimler
Visual Studio 17.9 veya üzeri ya da cl.exe
sürüm 19.39.33428 veya üzerini gerektirir.
kullanmak typeof_unqual
için ile derleyin /std:clatest
.