如何在 C 中编写接受泛型参数的函数? (比如一个int,一个char...)
最佳答案
我个人会这样做:
1) 发送一个指向void *的指针作为第一个参数
2) 发送第二个参数告诉你 void * 是什么(可能性的枚举)并将参数 1 转换为它
这会让您编写带有大量开关的丑陋代码,但如果仔细完成并经过全面测试,可能会奏效。
类似于:
// the enum:
BYTE_VALUE = 1; INT_VALUE = 2, CHAR_VALUE = 3 etc
// the function
int parse(void *arg, enum_type arg_type)
{
if (arg == NULL) return -1;
switch(arg_type)
{
case BYTE_VALUE:
byte value = (byte) *arg;
// do work here
case INT_VALUE:
// etc
}
return something;
}
编辑:假设您不想要可变参数函数(在我看来这不是您想要的)
关于C 所有类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662229/