当前位置: 首页 > news >正文

北京做网站建设价格google谷歌

北京做网站建设价格,google谷歌,绍兴以往网站招工做,加强学院网站的建设与管理在c中,函数参数类型和返回值类型通常是一个比较明确的信息,好像确实无需在这个上面费周折。然而,硬编码数据类型会让代码复用性下降,如果能够通过某种方式自动获取函数参数和返回值类型,对于代码的可复用性&#xff0c…

在c++中,函数参数类型和返回值类型通常是一个比较明确的信息,好像确实无需在这个上面费周折。然而,硬编码数据类型会让代码复用性下降,如果能够通过某种方式自动获取函数参数和返回值类型,对于代码的可复用性,可读性和整洁性都有较大的提升。最近阅读GoogleTest的源码(v1.8.1)发现,它采用了模板方法实现了这一点:

// googletest/googlemock/include/gmock/internal
/gmock-generated-internal-utils.h...
template <typename F>
struct Function;template <typename R>
struct Function<R()> {typedef R Result;...
};template <typename R, typename A1>
struct Function<R(A1)>: Function<R()> {typedef A1 Argument1;...
};template <typename R, typename A1, typename A2>
struct Function<R(A1, A2)>: Function<R(A1)> {typedef A2 Argument2;...
};template <typename R, typename A1, typename A2, typename A3>
struct Function<R(A1, A2, A3)>: Function<R(A1, A2)> {typedef A3 Argument3;...
};...

上面的代码,gmock在使用的时候是配合宏实现不同类型函数的统一。在实际开发中,我们可以借助decltype,auto以及函数指针的方式来对函数的返回值和参数类型进行统一拆分,只需对上述代码进行稍微调整即可:

template <typename T> 
struct Function;//以下以__stdcall 调用类型为例,如果函数调用类型是 __cdcel, 则需要特化新的模板组
template <typename R>
struct Function<R __stdcall()> {typedef R RESULT;
};template <typename R, typename A1>
struct Function<R __stdcall(A1)> :Function<R __stdcall()>
{typedef A1 ARG1;
};template <typename R, typename A1, typename A2>
struct Function<R __stdcall(A1,A2)> :Function<R __stdcall(A1)>
{typedef A2 ARG2;
};template <typename R, typename A1, typename A2,typename A3>
struct Function<R __stdcall(A1, A2,A3)> :Function<R __stdcall(A1,A2)>
{typedef A3 ARG3;
};//如果是函数指针类型,可以用以下模板特化组
template <typename R>
struct Function<R(__stdcall*)()> {typedef R RESULT;
};template <typename R, typename A1>
struct Function<R(__stdcall*)(A1)> :Function<R(__stdcall*)()>
{typedef A1 ARG1;
};template <typename R, typename A1, typename A2>
struct Function<R(__stdcall*)(A1,A2)> :Function<R(__stdcall*)(A1)>
{typedef A2 ARG2;
};template <typename R, typename A1, typename A2,typename A3>
struct Function<R(__stdcall*)(A1,A2,A3)> :Function<R(__stdcall*)(A1,A2)>
{typedef A3 ARG3;
};// 如果有更多参数,可在此处扩展

测试代码:

int __stdcall STD_CALL_FUNC_WITH_ONE_PARAM(int b)
{int nn = 0;return nn;
}int main(int argc, char* argv[], char* env[])
{//typedef int (__stdcall *Func)(int);using Func = decltype(&STD_CALL_FUNC_WITH_ONE_PARAM);Func bvn = STD_CALL_FUNC_WITH_ONE_PARAM;Function<decltype(bvn)>::RESULT result1;Function<decltype(bvn)>::ARG1 arg1;auto funcAutoPtr = STD_CALL_FUNC_WITH_ONE_PARAM;Function<decltype(funcAutoPtr)>::RESULT result2;Function<decltype(funcAutoPtr)>::ARG1 arg2;Function<decltype(STD_CALL_FUNC_WITH_ONE_PARAM)>::RESULT result3;Function<decltype(STD_CALL_FUNC_WITH_ONE_PARAM)>::ARG1 arg3;return 0;
}

http://www.dt0577.cn/news/3951.html

相关文章:

  • 黄石有哪些做视觉网站的公司百度快速查询
  • 仙居网站建设短视频培训要多少学费
  • Wordpress CMS官网搜索引擎优化英文简称为
  • 开通自媒体账号的步骤网站自然排名优化
  • 最新新闻热点事件2023摘抄宁波核心关键词seo收费
  • 周口网站制作哪家好沈阳关键词快照优化
  • 杭州做网站模板网络营销渠道可分为
  • 做网站域名有什么用做引流的公司是正规的吗
  • 做诈骗网站吗武汉seo搜索引擎
  • 移动互联网开发的学习心得影响seo排名的因素
  • 有什么网站是做兼职的网络整合营销推广
  • 展示类网站模板保定seo排名外包
  • 专门做金融的招聘网站百度搜图片功能
  • 乐陵疫情最新消息今天新增一例seo兼职
  • 刷赞网站推广软件头条新闻 最新消息条
  • 营销型企业网站建设教案baike seotl
  • 沧州模板建站平台关键词seo服务
  • wordpress 相册 插件seo百度站长工具
  • 网站建设手机软件百度 官网
  • 有什么网站可以做六级题目嘛企业建站平台
  • 济南做网站优化dw网页制作教程
  • 手机移动开发网站百度的人工客服电话
  • 一步步教你做电商网站googleseo排名公司
  • 站长工具seo推广企业管理软件排名
  • 西安网站制作公司哪天津网站优化公司
  • 租赁空间网站建设北京网站sem、seo
  • 制作网站公司谁家好怎么自己做网站
  • 做网站的工作记录上海今天刚刚发生的新闻
  • 二手房网签合同在哪个网站做厦门seo顾问屈兴东
  • 代理记账网站模板网盘资源大全