使用Softune C编译器无法使用_Generic
我在论坛上搜索了很多关于我必须在代码中使用泛型主表达式的问题。 我编写了一个宏,使用_Generic函数获取变量的数据类型:使用Softune C编译器无法使用_Generic,c,generics,macros,complex-data-types,softune,C,Generics,Macros,Complex Data Types,Softune,我在论坛上搜索了很多关于我必须在代码中使用泛型主表达式的问题。 我编写了一个宏,使用_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
#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);
因此,我有一个编译错误,表明未定义_泛型函数:
W1020B:警告:标识符“_Generic”未定义
E4254B:不允许使用类型名称
E4018B:预期为“a”)
E4065B:预期为“
有什么想法吗?
必须指出,我使用Softune C编译器编译了我的项目。
\u Generic
是在C11中引入的。似乎Softune不支持该版本。我找不到明确的陈述,但在手册中我读到:
有关C语言语法和标准库函数,请参阅符合ANSI标准的商用参考书
因此,它可能只支持ANSI C,也就是C89
看来你运气不好。您必须在不使用
\u Generic
关键字的情况下编写代码。注意:\u Generic
重复类型的用法不正确。