C ?中的通用关键字
众所周知,宏是用于 C 或 C++ 中的,但是它不具备类型检查功能。宏可以在其中接受任何类型的参数。以下示例将清晰地展示此案例。
示例
#include<stdio.h> #define INCREMENT(X) ++X main() { int x = 5; float y = 2.56; char z = 'A'; printf("Integer Increment: %d
", INCREMENT(x)); printf("Float Increment: %f
", INCREMENT(y)); printf("Character Increment: %c
", INCREMENT(z)); }
输出
Integer Increment: 6 Float Increment: 3.560000 Character Increment: B
这就是宏的问题。在 C 的后续版本中,我们可以使用“_Generic”关键字来使用宏。使用此方法,我们能够使用不同类型的数据类型定义宏。我们来看一下一个示例。
示例
#include<stdio.h> #define INCREMENT(X) _Generic( (X), char: X+10, int: X+1, float: X+2.5, default: 0) main() { int x = 5; float y = 2.56; char z = 'A'; printf("Integer Increment: %d
", INCREMENT(x)); printf("Float Increment: %f
", INCREMENT(y)); printf("Character Increment: %c
", INCREMENT(z)); }
输出
Integer Increment: 6 Float Increment: 5.060000 Character Increment: K
广告