typeof
, __typeof__
(C23)
Nuevo en el estándar C23, el typeof
operador es un operador unario que devuelve el tipo de una expresión. 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__
palabra clave es una extensión específica de Microsoft que proporciona la misma funcionalidad typeof
que . La __typeof__
palabra clave difiere de typeof
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__
.
Sintaxis de typeof
typeof(type)
typeof(constant-expression)
__typeof__(constant-expression)
Ejemplo de typeof
En este ejemplo se usa typeof()
, pero el comportamiento es el mismo si usa __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
Requiere Visual Studio 17.9 o posterior, o cl.exe
la versión 19.39.33428 o posterior.
Para usar typeof
, compile con /std:clatest
.