typeof, __typeof__ (C23)

Nowy w standardzie typeof C23 operator jest operatorem jednoargumentowym, który zwraca typ wyrażenia. Można go używać w deklaracjach typów, rzutach typu, kontrolach typów itd. Pobiera typ zmiennej, funkcji lub dowolnego wyrażenia języka C.

Słowo __typeof__ kluczowe to rozszerzenie specyficzne dla firmy Microsoft, które zapewnia takie same funkcje jak typeof. Słowo __typeof__ kluczowe różni się tylko od typeof tego, że jest dostępne podczas kompilowania dla wszystkich wersji języka C (nie tylko /std:clatest), i może ułatwić przenoszenie kodu między innymi kompilatorami obsługującymi __typeof__program .

Składnia aparatu typeof

typeof(type)
typeof(constant-expression)
__typeof__(constant-expression)

typeof Przykład

W tym przykładzie użyto typeof()metody , ale zachowanie jest takie samo, jeśli używasz polecenia __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;
}

Wymagania

Wymaga programu Visual Studio 17.9 lub nowszego albo cl.exe w wersji 19.39.33428 lub nowszej. Aby użyć polecenia , skompiluj za pomocą typeof/std:clatestpolecenia .

Zobacz też

/std (Określ wersję standardową języka)