c - 带空参数的函数

标签 c void

我必须执行一个函数,该函数接受任何数据类型的变量并返回相同数据类型的变量。我不知道如何做到这一点,我所知道的是我必须使用 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/

相关文章:

c - 使用 C 在 OS X 中上次修改文件后获取时间?

java - 在java中使用instanceof Void

c++ - 代码中void(*)()是什么意思

c# - 使用 Moq 将参数修改为 stub void 方法

C编程,[错误]调用对象 'swap'不是函数或函数指针

c - 是否可以使用数组成员构造此文件

string - 为什么将字符串指针转换为void指针然后返回会导致字符串数据消失? (Opencv的)

function - Go - void函数和直接赋值

c++ - 无法编译 brian gladman aes 库

c - 在代码块中使用 #include ""指令时出错