【发布时间】:2017-11-15 23:11:01
【问题描述】:
我必须对不同的数据类型使用相同的函数以避免额外的函数和冗长的代码。 我在函数中使用 (void*) 参数,并想取回我从 main 发送的相同数据类型。即如果 int 来自 main,我应该能够从“func”的 void* 猜测 int 数据类型。这是示例函数...
void func(void* input)
{
if(input is int)
printf("%d", input);
else if (input is char)
printf("%c", input);
else if (input is struct)
//do somthing;
}
主要是:
int main()
{
int q=1;
char w='c';
func(&q);
func(&w);
func(&struct);
return 0;
}
【问题讨论】:
-
“否”。常见的方法是传递一个“标记的结构/联合”(或依赖其他上下文数据,例如 fscanf)。
-
@user2864740:你可以在 C11 中使用包装宏来伪造它,例如
#define func(p) (printf(_Generic(*(p), int: "%d", char: "%c"), (p))).
标签: c