我是靠谱客的博主 可耐短靴,最近开发中收集的这篇文章主要介绍C++变参函数和变参宏,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

因为需要代码美观,我要将所有参数检查的动作封装起来;直接上代码:

头文件:

#define CHECK_PARAMS(params, ...) {if(!checkSpecifiedParams(¶ms, __VA_ARGS__, "va_end"))return LOST_SPECIFIED_PARAM;}
bool checkSpecifiedParams(const PARAMS*, ...);

最后加入参数“va_end”的原因是我无法知道变参何时结束,故而添加结束标记

__VA_ARGS__,这个宏可以取到变参,给c++编译器赞一个!


cpp实现:

bool checkSpecifiedParams(const PARAMS* params, ...)
{
va_list paramList;
va_start(paramList, params);
while(paramList != NULL)
{
char* key = va_arg(paramList, char*);
if(strcmp(key, "va_end") == 0)
break;
if(!params->contains(key))
return false;
}
va_end(paramList);
return true;
}

这里说明一下:

va_start(paramList, params);通过params,取得紧随其后参数的地址

va_arg(paramList, char*);按照类型取得该参数的地址,并将指针指向下一个参数的地址

va_end(paramList);将地址置空


使用方式:

CHECK_PARAMS(params, "file_id", "group_id", "history_id");


都是工作的代码片段,不过都是原创的,所以不怕被“规”,哈哈哈。。。多多指教。




最后

以上就是可耐短靴为你收集整理的C++变参函数和变参宏的全部内容,希望文章能够帮你解决C++变参函数和变参宏所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部