下面是一个解决方法的示例代码:
#include
#define _generic(T) _Generic((T), \
int: "integer", \
double: "double", \
default: "other" \
)
typedef struct {
int x;
int y;
} Point;
int main() {
Point p;
// 使用_generic宏,避免产生警告
printf("Type of p: %s\n", _generic(p));
return 0;
}
在上面的示例中,我们定义了一个结构体Point和一个_generic宏。_generic宏使用_Generic关键字来根据传入的参数类型返回相应的字符串。
在main函数中,我们声明了一个Point类型的变量p。然后,我们通过调用_generic宏来获取p的类型,并打印出来。
这样做可以避免从不同大小的整数到指针的强制转换警告的出现。