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

北京住房与城乡建设厅网站首页wordpress 伪静态 windows

北京住房与城乡建设厅网站首页,wordpress 伪静态 windows,北京网站建设签约,茂名网站建设公司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.w-s-a.com/news/3985/

相关文章:

  • 怎么查网站是在哪里备案的广州电力建设有限公司网站
  • 做网站自己申请域名还是对方wordpress管理地址
  • 专门做二手书网站或appwordpress首页显示特定分类文章
  • 无锡网站设计厂家一建十个专业含金量排名
  • 网站刷链接怎么做成都高度网站技术建设公司
  • flash网站模板怎么用xml网站地图生成
  • 英文网站优化群晖wordpress中文
  • saas建站平台源码济南品牌网站建设公司
  • 网站建设一般是用哪个软件网站百度
  • 企业建站的作用是什么南宁公司网站开发
  • 厦门网站建设及维护门户网站开发视频教学
  • 可以做兼职的网站有哪些自动点击器永久免费版
  • 建购物网站怎么建呀网站怎么做中英文交互
  • 网站建设费用计入无形资产做网站用的主机
  • 佛山企业网站建设平台沈阳网站建设培训班
  • 河南企业网站优化外包网站怎么做来流量
  • 网站建设的参考文献网站设计网页的优缺点
  • WordPress多站點支付插件内江市网站建设培训
  • 做做网站已更新动漫制作专业需要学什么
  • dfv印花图案设计网站网站建设应该应聘什么岗位
  • 网站后台管理系统模板下载专业网站推广的公司哪家好
  • 克拉玛依市建设局网站网页设计板式重构
  • 网站新闻专题怎么做湖南营销型网站建设 要上磐石网络
  • 阿里云发布网站成都轨迹公布
  • php网站源码架构谷歌站群系统
  • 潮州网站seowordpress 调用置顶文章
  • 做带会员后台的网站用什么软件旅游网站建设资金请示
  • 商品网站怎么做wordpress 表情拉长
  • 商城网站设计费用网络公司怎样推广网站
  • 视频公司的网站设计工图网