test1.cpp
#include#define MYTYPE(X) _Generic((X), int: "int", float : "float", double: "double", default: "other" ) int main(void) { int d = 5; printf("%sn", MYTYPE(d)); // d 是int类型 printf("%sn", MYTYPE(2.0*d)); // 2.0 * d 是double类型 printf("%sn", MYTYPE(3L)); // 3L 是long类型 printf("%sn", MYTYPE(&d)); // &d 的类型是 int * return 0; }
test2.c
#include#define MYTYPE(X) _Generic((X), int: "int", float : "float", double: "double", default: "other" ) int main(void) { int d = 5; printf("%sn", MYTYPE(d)); // d 是int类型 printf("%sn", MYTYPE(2.0*d)); // 2.0 * d 是double类型 printf("%sn", MYTYPE(3L)); // 3L 是long类型 printf("%sn", MYTYPE(&d)); // &d 的类型是 int * return 0; } [点击并拖拽以移动]
这里两个文件内容完全一致,
第一个是以.cpp后缀运行,就是c++文件运行,运行时报错
第二个是以.c后缀运行,这个才是c语言文件,运行不报错



