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

三航奔腾建设有限公司官方网站上传文章的网站

三航奔腾建设有限公司官方网站,上传文章的网站,微网站对比,新公司网站怎么做推广C/C 中#define 的妙用#xff0c;让代码更美一些 flyfish 1 数值类型输出易读的字符串形式 例如使用enum定义一些错误值#xff0c;想要将数值类型的错误#xff0c;输出易读的字符串形式 重要的一句代码 #define MAKE_PAIR(val) std::make_pair(val, #val)可以看到 #va…C/C 中#define 的妙用让代码更美一些 flyfish 1 数值类型输出易读的字符串形式 例如使用enum定义一些错误值想要将数值类型的错误输出易读的字符串形式 重要的一句代码 #define MAKE_PAIR(val) std::make_pair(val, #val)可以看到 #val宏定义中的传入参数名val 转换成字符串就像用一对双引号包含起来的val 完整实现代码如下 #include iostream #include cinttypes #include string #include typeinfo #include utility #include vector using namespace std;typedef enum {ACAMERA_OK 0,ACAMERA_ERROR_BASE -10000,ACAMERA_ERROR_UNKNOWN ACAMERA_ERROR_BASE,ACAMERA_ERROR_INVALID_PARAMETER ACAMERA_ERROR_BASE - 1,ACAMERA_ERROR_CAMERA_DISCONNECTED ACAMERA_ERROR_BASE - 2,} camera_status_t;#define UKNOWN_TAG UNKNOW_TAG #define MAKE_PAIR(val) std::make_pair(val, #val) template typename T const char* GetPairStr(T key, std::vectorstd::pairT, const char* store) {typedef typename std::vectorstd::pairT, const char*::iterator iterator;for (iterator it store.begin(); it ! store.end(); it) {if (it-first key) {return it-second;}}//LOGW((%#08x) : UNKNOWN_TAG for %s, key, typeid(store[0].first).name());return UKNOWN_TAG; } using ERROR_PAIR std::paircamera_status_t, const char*; static std::vectorERROR_PAIR errorInfo{MAKE_PAIR(ACAMERA_OK),MAKE_PAIR(ACAMERA_ERROR_UNKNOWN),MAKE_PAIR(ACAMERA_ERROR_INVALID_PARAMETER),MAKE_PAIR(ACAMERA_ERROR_CAMERA_DISCONNECTED), }; const char* GetErrorStr(camera_status_t err) {return GetPairStrcamera_status_t(err, errorInfo); }int main() {std::coutGetErrorStr(ACAMERA_ERROR_INVALID_PARAMETER)std::endl;return 0; }输出 ACAMERA_ERROR_INVALID_PARAMETER2 易记的简化调用 例如有两个函数 camera_status_t ACameraManager_A() {std::coutAstd::endl;return ACAMERA_OK; }camera_status_t ACameraManager_B() {std::coutBstd::endl;return ACAMERA_OK; }这两个函数很长函数名前缀相同 想要易记的简化调用 例如 CALL_MGR(A()); //实际调用ACameraManager_A() CALL_MGR(B()); //实际调用ACameraManager_B()#define CALL_CAMERA(func) \{ \camera_status_t status func; \std::coutGetErrorStr(status)std::endl; \} #define CALL_MGR(func) CALL_CAMERA(ACameraManager_##func)#define 后面的 \ 表示下一行继续写宏定义。 两个#号 ## 表示连接操作符。 CALL_MGR(A());通过 ACameraManager_##func 变成了ACameraManager_A 实现完整代码如下 #include iostream #include cinttypes #include string #include typeinfo #include utility #include vector #include assert.h using namespace std;typedef enum {ACAMERA_OK 0,ACAMERA_ERROR_BASE -10000,ACAMERA_ERROR_UNKNOWN ACAMERA_ERROR_BASE,ACAMERA_ERROR_INVALID_PARAMETER ACAMERA_ERROR_BASE - 1,ACAMERA_ERROR_CAMERA_DISCONNECTED ACAMERA_ERROR_BASE - 2,} camera_status_t;#define UKNOWN_TAG UNKNOW_TAG #define MAKE_PAIR(val) std::make_pair(val, #val) template typename T const char* GetPairStr(T key, std::vectorstd::pairT, const char* store) {typedef typename std::vectorstd::pairT, const char*::iterator iterator;for (iterator it store.begin(); it ! store.end(); it) {if (it-first key) {return it-second;}}//LOGW((%#08x) : UNKNOWN_TAG for %s, key, typeid(store[0].first).name());return UKNOWN_TAG; } using ERROR_PAIR std::paircamera_status_t, const char*; static std::vectorERROR_PAIR errorInfo{MAKE_PAIR(ACAMERA_OK),MAKE_PAIR(ACAMERA_ERROR_UNKNOWN),MAKE_PAIR(ACAMERA_ERROR_INVALID_PARAMETER),MAKE_PAIR(ACAMERA_ERROR_CAMERA_DISCONNECTED), }; const char* GetErrorStr(camera_status_t err) {return GetPairStrcamera_status_t(err, errorInfo); }camera_status_t ACameraManager_A() {std::coutAstd::endl;return ACAMERA_OK; } camera_status_t ACameraManager_B() {std::coutBstd::endl;return ACAMERA_OK; } #define CALL_CAMERA(func) \{ \camera_status_t status func; \std::coutGetErrorStr(status)std::endl; \} #define CALL_MGR(func) CALL_CAMERA(ACameraManager_##func) int main() {CALL_MGR(A());CALL_MGR(B());return 0; }输出 A ACAMERA_OK B ACAMERA_OK以上代码应用在google的ndk camera代码中
http://www.hkea.cn/news/14294602/

相关文章:

  • windows10前段网站建设摄影网页模板
  • 1做网站推广长治seo
  • 建设部网站申请表无法打印wordpress实现选项卡
  • 设计前沿的网站wordpress 博客二号
  • 建设门户网站需要多少钱苏州网站推广去苏州聚尚网络
  • 建设教育协会官网找一个网站做优化分析
  • 辽源建站公司seo诊断工具
  • 食品安全网站建设沈阳定制网红小熊
  • 商务网站建设总结嘉兴中小企业网站制作
  • 网站设计如何收费如何用模板搭建网站
  • 抚顺网站建设技术员招聘一流高职院校建设工作网站
  • 保山市建设局网站网页设计高清素材
  • 网站流量下滑在那里建立公司网站
  • seo网站营销推广公司用php做的旅游网站
  • 中国建设银行北京分行官网站现在还有没有做任务的网站
  • 凡科建站提示网站建设中网站有哪些区别
  • 百度搜索这个网站为什么这么差网站 制作 工具
  • 做外贸的都有那些网站阿里巴巴电脑版网页
  • 手机网站 手机app网站设计需从哪些方面考虑
  • 58同城 网站开发短视频营销常用平台有
  • 网站利于搜索国外高清视频素材网站推荐
  • 沧州网站建设培训网站建设公司的
  • 黄骅市做网站广州企业网站制作推广运营
  • 天津北京网站建设济南企业网站推广方法
  • 江宁区财政局网站开发区分局免费发广告的软件有哪些
  • 短链生成网站太仓家政保洁公司
  • 如何做单网页网站html网页游戏制作
  • 手机端网站模板下载阿里云一键wordpress
  • 苏州网站建设智能 乐云践新网站开发面试自我介绍
  • 外省公司做网站备案湖南建设人力资源网站