我必须执行一个函数,该函数接受任何数据类型的变量并返回相同数据类型的变量。我不知道如何做到这一点,我所知道的是我必须使用 void 作为参数的数据类型,所以我所拥有的就是这个,显然是行不通的:
void better (void a, void b)
{
if ( a > b )
return a;
else if ( b > a )
return b;
}
所以我的问题是这样做的正确方法是什么? 这不是我的确切任务,我只是想了解它是如何工作的。
最佳答案
也许首先识别比较方法会有所帮助:
typedef enum CMPTYPE_E
{
CMPTYPE_STRCMP,
CMPTYPE_INT
// ..etc
} CMPTYPE_T;
然后,可以提供一个方法来比较每个定义的类型:
void *better (void *a, void *b, CMPTYPE_T cmpType)
{
switch(cmpType)
{
case CMPTYPE_STRCMP:
return(strcmp(a,b) > 1 ? a : b);
case CMPTYPE_INT:
return((*((int *)a) > *((int *)b)) ? a : b);
// ...etc
}
}
关于c - 带空参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23616079/