首页 > 解决方案 > 如果是指针,是否可以将 _Generic 的控制表达式提升为数组类型?

问题描述

如果它是指针,我需要将控制表达式(即:第一个,主要参数)_Generic提升为数组类型,并且对于非指针类型保持不变。我知道相反的效果:数组类型衰减为“等效”指针类型,但是,这不是我想要的……</p>

换句话说,以下应该有效:

#define PROMOTE_MACRO(x) _Generic(something(x),\
    int[8] : 1, default: 0)
int *ptr, normal;
printf("%d, %d\n", PROMOTE_MACRO(ptr), PROMOTE_MACRO(normal));
// outputs: 1, 0

数组的大小无关紧要(它可以被删除,但是_Generic需要一个完整的类型名称......)。我所需要的只是一种编译安全的方式来提升(并且唯一的)指向它的等效数组类型的某种大小的指针。可能吗?

标签: cgenericsmacros

解决方案


推荐阅读