Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Nytt i C23-standarden är operatorn typeof_unqual en unary-operator som returnerar typen av ett uttryck efter att ha ignorerat kvalificerare som const, volatileoch restrict. Det kan användas i typdeklarationer, typgjutningar, typkontroller och så vidare. Den hämtar typen av en variabel, funktion eller valfritt C-uttryck.
Nyckelordet __typeof_unqual__ är ett Microsoft-specifikt tillägg som innehåller samma funktioner som typeof_unqual. Nyckelordet __typeof_unqual__ skiljer sig från typeof_unqual endast i och med att det är tillgängligt vid kompilering för alla versioner av C (inte bara /std:clatest), och det kan underlätta portningskoden mellan andra kompilatorer som stöder __typeof_unqual__.
              typeof_unqual syntax
typeof_unqual(type)
typeof_unqual(constant-expression)
__typeof__unqual(constant-expression)
              typeof_unqual exempel
I det här exemplet används typeof_unqual(), men beteendet är detsamma om du använder __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;
}
Kravspecifikation
Kräver Visual Studio 17.9 eller senare, eller cl.exe version 19.39.33428 eller senare.
Kompilera med /std:clatestom du vill använda typeof_unqual.