Compartilhar via


typeof_unqual, __typeof_unqual__ (C23)

Novo no padrão C23, o typeof_unqual operador é um operador unário que retorna o tipo de uma expressão após descartar qualificadores como const, volatilee restrict. Ele pode ser usado em declarações de tipo, casts de tipo, verificações de tipo e assim por diante. Ele obtém o tipo de uma variável, função ou qualquer expressão C.

A __typeof_unqual__ palavra-chave é uma extensão específica da Microsoft que fornece a mesma funcionalidade que typeof_unqualo . A __typeof_unqual__ palavra-chave difere apenas typeof_unqual por estar disponível durante a compilação para todas as versões do C (não apenas /std:clatest), e pode facilitar a portabilidade de código entre outros compiladores que suportam __typeof_unqual__.

Sintaxe de typeof_unqual

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

Exemplo do typeof_unqual

Este exemplo usa typeof_unqual(), mas o comportamento é o mesmo se você usar __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

Requer o Visual Studio 17.9 ou posterior ou cl.exe versão 19.39.33428 ou posterior. Para usar typeof_unqualo , compile com /std:clatesto .

Confira também

/std (Especificar a versão padrão da linguagem)