次の方法で共有


typeof_unqual__typeof_unqual__ (C23)

C23 標準の新機能であるこの演算子は、typeof_unqualdisカード後の式の型を返す単項演算子です。例: const, volatile, 、 restrict. 型宣言、型キャスト、型チェックなどで使用できます。 変数、関数、または任意の C 式の型を取得します。

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

typeof_unqual の構文

typeof_unqual(type)
typeof_unqual(constant-expression)
__typeof__unqual(constant-expression)

typeof_unqual の例

この例では 、を使用 typeof_unqual()しますが、使用する場合 __typeof_unqual__の動作は同じです。

// Compile with /std:clatest and /experimental:c11atomics
#include <stdatomic.h>

// A function that takes an atomic int pointer, but uses a non-atomic copy of the value
void func(_Atomic(int) * pAtomic)
{
    typeof_unqual(*pAtomic) local = *pAtomic;

    // Use local non-atomic copy of value
}

int main()
{
    int* const cpVar1 = 2;
    typeof_unqual(cpVar1) pVar2 = 3;
    pVar2 = 4; // no error because pi is not const. cpVar1 = 4 would be an error.

    _Atomic(int)i = 42;
    func(&i);

    return 0;
}

要件

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

関連項目

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