typeof_unqual, __typeof_unqual__ (C23)

C23 standardında yeni olan typeof_unqual işleç, , volatileve restrictgibi constniteleyicileri 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_unqualsağ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_unqualiçin ile derleyin /std:clatest.

Ayrıca bkz.

/std (Dil Standart Sürümünü Belirtin)