Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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, moldes 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 porque está disponível ao compilar para todas as versões de C (não apenas /std:clatest), e pode facilitar a portabilidade de código entre outros compiladores que suportam __typeof__.
typeof sintaxe
typeof(type)
typeof(constant-expression)
__typeof__(constant-expression)
typeof exemplo
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;
}
Requerimentos
Requer Visual Studio 17.9 ou posterior, ou cl.exe versão 19.39.33428 ou posterior.
Para usar typeofo , compile com /std:clatest.