コードで _Generic 一次式を使用しなければならない問題について、フォーラムで多くの検索を行いました。_Generic 機能を使用して変数のデータ型を取得するマクロを作成しました。
#define CHECK_DATA_TYPE(x) _Generic((x), /* Get the name of a type */ \
bool: DATA_TYPE_BOOL, \
u8 : DATA_TYPE_U8, \
s8 : DATA_TYPE_S8, \
u8 : DATA_TYPE_U16, \
s8 : DATA_TYPE_S16, \
u8 : DATA_TYPE_U32, \
s8 : DATA_TYPE_S32)
これまでのコードでは、マクロを呼び出します:
u8 test = 10; u8 val = CHECK_DATA_TYPE(test);
したがって、_Generic 関数が定義されていないことを示すコンパイル エラーが発生します。
W1020B: 警告: 識別子 "_Generic" は未定義です E4254B: 型名は許可されていません E4018B: ")" が必要です E4065B: ";" が必要です
何か案は?Softune C Compiler を使用してプロジェクトをコンパイルしたことを示すことが重要です。