在我编写的代码中,我需要 foo(int, char*)
和 foo(int, int)
函数。
如果我用 C++ 编写代码,我会使用模板。 C有什么等价物吗?还是应该使用 void 指针?怎么办?
最佳答案
我认为在 C 中最接近模板的是一些丑陋的宏代码。例如,要定义一个返回其参数两倍的简单函数:
#define MAKE_DOUBLER(T) \
T doubler_##T(T x) { \
return 2 * x; \
}
MAKE_DOUBLER(int)
MAKE_DOUBLER(float)
请注意,由于 C 没有函数重载,您必须使用函数名称来玩弄技巧(上面的代码同时生成了 doubler_int
和 doubler_float
,并且您必须这样称呼他们)。
printf("%d\n", doubler_int(5));
printf("%f\n", doubler_float(12.3));
关于c - C 中是否有 C++ 模板的等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2873850/