次の方法で共有


typeof__typeof__ (C23)

C23 標準の新機能であるこの演算子は、 typeof 式の型を返す単項演算子です。 型宣言、型キャスト、型チェックなどで使用できます。 変数、関数、または任意の C 式の型を取得します。

__typeof__ キーワード (keyword)は、Microsoft 固有の拡張機能typeofであり、.. キーワード (keyword)は__typeof__、すべてのバージョンの C (だけでなく/std:clatest) 用にコンパイルするときに使用できる点と異なりtypeof、サポート__typeof__する他のコンパイラ間でのコードの移植が容易になる場合があります。

typeof の構文

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

typeof の例

この例では 、を使用 typeof()しますが、使用する場合 __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;
}

要件

Visual Studio 17.9 以降、または cl.exe バージョン 19.39.33428 以降が必要です。 を使用 typeofするには、次のようにコンパイルします /std:clatest

関連項目

/std (言語の標準バージョンの指定)