Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Novità dello standard C23, l'operatore typeof è un operatore unario che restituisce il tipo di un'espressione. Può essere usato nelle dichiarazioni di tipo, nei cast di tipi, nei controlli dei tipi e così via. Ottiene il tipo di una variabile, di una funzione o di un'espressione C.
La __typeof__ parola chiave è un'estensione specifica di Microsoft che fornisce la stessa funzionalità di typeof. La __typeof__ parola chiave differisce solo dal typeof fatto che è disponibile durante la compilazione per tutte le versioni di C (non solo /std:clatest) e può semplificare la conversione del codice tra altri compilatori che supportano __typeof__.
Sintassi typeof
typeof(type)
typeof(constant-expression)
__typeof__(constant-expression)
typeof esempio
In questo esempio viene typeof()usato , ma il comportamento è lo stesso se 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;
}
Requisiti
Richiede Visual Studio 17.9 o versione successiva o cl.exe versione 19.39.33428 o successiva.
Per usare typeof, compilare con /std:clatest.