C 语言中的 _Generic 关键字 ? 1:20
C 语言中的 _Generic 关键字用于为不同的数据类型定义宏。此新关键字已在 C11 标准版本中添加至 C 编程语言中。_Generic 关键字用于帮助编程人员更加高效地使用宏。
此关键字基于变量的类型转换宏。我们来看一个示例,
#define dec(x) _Generic((x), long double : decl, \ default : Inc , \ float: incf )(x)
上述语法是针对不同方法声明任何宏作为通用宏的方法。
我们来看一个示例代码,此代码将定义一个宏,该宏将基于数据类型返回值 −
示例
#include <stdio.h> #define typecheck(T) _Generic( (T), char: 1, int: 2, long: 3, float: 4, default: 0) int main(void) { printf( "passing a long value to the macro, result is %d
", typecheck(2353463456356465)); printf( "passing a float value to the macro, result is %d
", typecheck(4.32f)); printf( "passing a int value to the macro, result is %d
", typecheck(324)); printf( "passing a string value to the macro, result is %d
", typecheck("Hello")); return 0; }
输出
passing a long value to the macro, result is 3 passing a float value to the macro, result is 4 passing a int value to the macro, result is 2 passing a string value to the macro, result is 0
广告