C语言检查变量是否属于某个限定类型
示例
#include <stdio.h>
#define is_const_int(x) _Generic((&x), \
const int *: "a const int", \
int *: "a non-const int", \
default: "of other type")
int main(void)
{
const int i = 1;
int j = 1;
double k = 1.0;
printf("i is %s\n", is_const_int(i));
printf("j is %s\n", is_const_int(j));
printf("k is %s\n", is_const_int(k));
}输出:
i is a const int j is a non-const int k is of other type
但是,如果类型通用宏是这样实现的:
#define is_const_int(x) _Generic((x), \
const int: "a const int", \
int: "a non-const int", \
default: "of other type")输出为:
i is a non-const int j is a non-const int k is of other type
这是因为删除了所有类型限定符以评估_Generic主表达式的控制表达式。
热门推荐
10 好朋友夫妻祝福语简短
11 蛋糕祝老师祝福语简短
12 中秋送健康祝福语简短
13 天气转凉祝福语简短
14 初升高祝福语家长简短
15 女儿结婚账单祝福语简短
16 离职横幅升职祝福语简短
17 新房开工吉日祝福语简短
18 新年祝福语长篇文案简短