Share via


typeof_unqual, __typeof_unqual__ (C23)

Novedad del estándar C23, el typeof_unqual operador es un operador unario que devuelve el tipo de una expresión después de descartar calificadores como const, volatiley restrict. Se puede usar en declaraciones de tipo, conversiones de tipos, comprobaciones de tipos, etc. Obtiene el tipo de una variable, una función o cualquier expresión de C.

La __typeof_unqual__ palabra clave es una extensión específica de Microsoft que proporciona la misma funcionalidad typeof_unqualque . La __typeof_unqual__ palabra clave difiere de typeof_unqual solo en que está disponible al compilar para todas las versiones de C (no solo /std:clatest), y puede facilitar la portabilidad del código entre otros compiladores que admiten __typeof_unqual__.

Sintaxis de typeof_unqual

typeof_unqual(type)
typeof_unqual(constant-expression)
__typeof__unqual(constant-expression)

Ejemplo de typeof_unqual

En este ejemplo se usa typeof_unqual(), pero el comportamiento es el mismo si usa __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;
}

Requisitos

Requiere Visual Studio 17.9 o posterior, o cl.exe la versión 19.39.33428 o posterior. Para usar typeof_unqual, compile con /std:clatest.

Consulte también

/std (Especificar la versión estándar del lenguaje)