c - C 中是否有 C++ 模板的等效项?

标签 c

在我编写的代码中,我需要 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_intdoubler_float,并且您必须这样称呼他们)。

printf("%d\n", doubler_int(5));
printf("%f\n", doubler_float(12.3));

关于c - C 中是否有 C++ 模板的等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2873850/

相关文章:

c - 得到错误的随机数总和

c++ - 我可以从 C 或 C++ 外部控制 Chrome 扩展程序吗?

c++ - 这个8皇后算法如何进一步进行?

c - 在 C 中,bool( boolean 值)占用多少空间?是 1 位、1 字节还是其他?

c - 在C中将字符发送到链表

c - c 中 gets() 之前的 fflush(stdin)

c - 在 C 中为枚举赋值

c - 什么是 C token ?

C——修改栈基指针地址

c - 如何使用模式匹配分割字符串?