typeof
, __typeof__
(C23)
Neu im C23-Standard ist der typeof
Operator ein unärer Operator, der den Typ eines Ausdrucks zurückgibt. Sie kann in Typdeklarationen, Typ casts, Typüberprüfungen usw. verwendet werden. Er ruft den Typ einer Variablen, Funktion oder eines beliebigen C-Ausdrucks ab.
Das __typeof__
Schlüsselwort ist eine microsoftspezifische Erweiterung, die die gleiche Funktionalität wie typeof
. Das __typeof__
Schlüsselwort unterscheidet sich nur davon typeof
, dass es beim Kompilieren für alle C-Versionen (nicht nur /std:clatest
) verfügbar ist, und es kann das Portieren von Code zwischen anderen Compilern erleichtern, die unterstützt __typeof__
werden.
Syntax von typeof
typeof(type)
typeof(constant-expression)
__typeof__(constant-expression)
typeof
-Beispiel
In diesem Beispiel wird typeof()
verwendet, das Verhalten ist jedoch identisch, wenn Sie es verwenden __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;
}
Anforderungen
Erfordert Visual Studio 17.9 oder höher oder cl.exe
Version 19.39.33428 oder höher.
typeof
Kompilieren Mit /std:clatest
.