下面是一个解决方法的示例代码:
#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
的类型,并打印出来。
这样做可以避免从不同大小的整数到指针的强制转换警告的出现。