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 typeof
o . 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 typeof
o , compile com /std:clatest
o .