Compartilhar via


typeof, __typeof__ (C23)

Novo no padrão C23, o typeof operador é um operador unário que retorna o tipo de uma expressão. 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__ palavra-chave é uma extensão específica da Microsoft que fornece a mesma funcionalidade que typeofo . A __typeof__ palavra-chave difere apenas typeof 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__.

Sintaxe de typeof

typeof(type)
typeof(constant-expression)
__typeof__(constant-expression)

Exemplo do typeof

Este exemplo usa typeof(), mas o comportamento é o mesmo se você usar __typeof__.

// Compile with /std:clatest

#include <stdio.h>

double func()
{
    3.14;
}

#define POINTER(T) typeof(T*)

int main()
{
    auto a = func(); // the type for a (double) is inferred, but requires initialization at point of declaration
    typeof(func()) b; // the type for b is double, but didn't have to be initialized at point of declaration

    // Some declarations using typeof
    POINTER(int) p1 = NULL; // p1 is int*

    typeof(double(void))* pFunc = func; // pFunc is a pointer to a function that takes no arguments and returns a double
    printf("pFunc() returns %f\n", pFunc());

    return 0;
}

Requisitos

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

Confira também

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