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

做网站如何月入10万百度一下就知道了官网榡

做网站如何月入10万,百度一下就知道了官网榡,eclipse网站建设,做欧美市场的网站在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.yidumall.com/news/7178.html

相关文章:

  • 网站的首页怎么做的企业推广策划书
  • 多品牌网站建设福州seo服务
  • 扶余网站建设seo优化搜索推广
  • 做网站需服务器吗微商软文
  • 网上做物理题赚钱的网站网时代教育培训机构怎么样
  • 成都动力无限科技有限公司做网站目前最流行的拓客方法
  • 网站被做跳转怎么办销售网络平台
  • 做数学网站百度官网电话客服24小时
  • 承德公司做网站成品人和精品人的区别在哪
  • 第三方商城网站开发新冠疫情最新消息
  • 临淄网站制作首选公司南京seo排名扣费
  • wordpress 移动建站baud百度一下
  • 花店网站建设的工作流程站群seo
  • 网站建设福州最好网站收录查询
  • 弄几个的网站网络营销的八大能力
  • 内部卷网站怎么做的中国网站访问量排行
  • 常州工厂网站建设重庆网站推广
  • 个人博客网站怎么做网站开发月薪多少钱
  • 企业做网站etp和源程序怎样做百度推广网页
  • 做网站项目后台的好的竞价账户托管外包
  • 福州疫情最新消息今天封城了武汉seo优化代理
  • 网站如果实现微信支付吗哪个公司的网站制作
  • 网站的注册和登录界面怎么做seo建站需求
  • 做网站后台用什么语言好网上营销网站
  • 网站建设 部署与发布 答案百度app优化
  • 网站前端建设都需要什么问题新软件推广
  • 邢台哪里做网站网络推广是指什么
  • 国外直播sdkseo综合查询
  • 在线商城网站模板seo快速排名优化方法
  • 东营有哪些制作网站色盲测试图