【发布时间】:2015-06-14 01:13:22
【问题描述】:
如何编写一个接受未定义参数的函数? 我想它可以这样工作:
void foo(void undefined_param)
{
if(typeof(undefined_param) == int) {/...do something}
else if(typeof(undefined_param) == long) {/...do something else}
}
我读过模板也许可以解决我的问题,但是在 C++ 中,我需要它在 C 中。
我只是想避免使用大量相似代码编写两个函数。就我而言,我不会寻找int 或long,而是寻找我定义的结构类型。
【问题讨论】:
-
你不能....对不起。 C++(以及 C)是一种类型化语言。
-
好吧,你可以在某种程度上解决这个问题,方法是使用一个绑定了指向 some 数据的 void 指针和一些自定义类型指示符(例如枚举类型)的结构
-
您可以在 C11 中使用类型泛型表达式“重载宏”(请参阅 en.wikipedia.org/wiki/C11_%28C_standard_revision%29),但它可能是也可能不是您想要的。
-
您可以使用可变参数函数,只要您至少有一个命名和类型化参数——但类型信息不会传递给函数。您需要一个约定来指定类型(例如,
printf的格式字符串)。
标签: c function types parameters