Megosztás a következőn keresztül:


typeof, __typeof__ (C23)

A C23 szabvány újdonsága, hogy az typeof operátor egy unary operátor, amely egy kifejezés típusát adja vissza. Használható típusdeklarációkban, típusbeosztásokban, típusellenőrzésekben stb. Egy változó, függvény vagy bármely C kifejezés típusát kapja meg.

A __typeof__ kulcsszó egy Microsoft-specifikus bővítmény, amely ugyanazokat a funkciókat biztosítja, mint a typeof. A __typeof__ kulcsszó abban különbözik typeof , hogy a C összes verziójának fordításakor elérhető (nem csak /std:clatest), és megkönnyítheti a kód más, támogatott __typeof__fordítók közötti portolását.

typeof szintaxis

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

typeof példa

Ez a példa használja typeof(), de a viselkedés ugyanaz, ha használja __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;
}

Követelmények

A Visual Studio 17.9-es vagy újabb verziójára, illetve cl.exe a 19.39.33428-es vagy újabb verzióra van szükség. A használathoz typeoffordítsa le a következővel /std:clatest: .

Lásd még

/std (A Language Standard verzió megadása)