设为首页 加入收藏

TOP

如何实现C的函数重载(三)
2013-07-22 17:56:40 来源: 作者: 【 】 浏览:358
Tags:如何 实现 函数 重载

 

  或者一个更高级的写法:

  voidgcc_type_overload_aux(inttypeval, ...)

  {

  switch(typeval)

  {

  case1:

  {

  va_list v;

  va_start(v, typeval);

  structs1 s = va_arg(v,structs1);

  va_end(v);

  gcc_overload_s1(s);

  break;

  }

  case2:

  {

  va_list v;

  va_start(v, typeval);

  structs2 s = va_arg(v,structs2);

  va_end(v);

  gcc_overload_s2(s);

  break;

  }

  default:

  {

  printf("Invalid type to 'gcc_type_overload()'\n");

  exit(1);

  }

  }

  }

  #definegcc_type_overload(A)\

  gcc_type_overload_aux(\

  __builtin_types_compatible_p(typeof(A),structs1) *1\

  + __builtin_types_compatible_p(typeof(A),structs2) *2\

  , A)

  另外两种用 C 实现函数重载的方法可以是利用宏和预处理,以及函数指针,只不过具体的重载方式也要根据特定的应用场景来决定。

  不过,C 实现函数重载需要开发人员自己编写很多额外的代码,门槛稍微高了,这也使得 C 语言不太适合用函数重载方式来编写规范的应用程序接口。

  所以,以后别人如果问你,C 可不可以实现函数重载,你就不能说“C 是不支持函数重载的”,而应该回答:“看情况看心情看应用场景咯 :-)“。

        

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言实现简单的倒排文件索引 下一篇设置缓存失效的三种方式

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: