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

怎么登陆网站后台管理系统wordpress 跳转 计数

怎么登陆网站后台管理系统,wordpress 跳转 计数,行业前10的网站建设公,邢台网站推广目录 1. 函数宏介绍 2. {} 方式 3. do{...}while(0) 方式 4. ({}) 方式 5. 总结 1. 函数宏介绍 函数宏#xff0c;即包含多条语句的宏定义#xff0c;其通常为某一被频繁调用的功能的语句封装#xff0c;且不想通过函数方式封装来降低额外的弹栈压栈开销。 函数宏本质…目录 1. 函数宏介绍 2. {} 方式 3. do{...}while(0) 方式 4. ({}) 方式 5. 总结 1. 函数宏介绍 函数宏即包含多条语句的宏定义其通常为某一被频繁调用的功能的语句封装且不想通过函数方式封装来降低额外的弹栈压栈开销。 函数宏本质上为宏可以直接进行定义例如 #define INT_SWAP(a,b) \int tmp  a;    \a  b;          \b  tmp 但上述的宏具有一个明显的缺点当遇到 if、while 等语句且不使用花括号仅调用宏时实际作用范围在宏的第一个分号后便结束。即 a b 和 b tmp 均不受控制语句所作用。 因此在工程中一般使用三种方式来对函数宏进行封装分别为 {}、do{...}while(0) 和 ({})。下文将一一对三种方式进行分析比较各自的优劣点。 2. {} 方式 INT_SWAP 宏使用 {} 封装后形态如下 #define INT_SWAP(a,b)\ { \int tmp a; \a b; \b tmp; \ } 此时直接调用与在无花括号的控制语句如 if、while中调用均能正常运行例如 #define INT_SWAP(a,b) \ { \int tmp a; \a b; \b tmp; \ }int main() {int var_a 1;int var_b 2;INT_SWAP(var_a, var_b);printf(var_a %d, var_b %d\n, var_a, var_b); // var_a 2, var_b 1if (1)INT_SWAP(var_a, var_b);printf(var_a %d, var_b %d\n, var_a, var_b); // var_a 1, var_b 2 } 但当无花括号的 if 语句存在其他分支else if、else 等如 if (1)INT_SWAP(var_a, var_b); elseprintf(hello world!\n); 会发现编译出错 ... /mnt/hgfs/share/pr_c/src/main.c: In function ‘main’: /mnt/hgfs/share/pr_c/src/main.c:18:2: error: ‘else’ without a previous ‘if’else 这是因为 INT_SWAP(var_a, var_b); 最后的 ; 已经把 if 的作用域终结了后续的 else 当然没有找到与之匹配的 if 了。 因此解决方法有两种分别为不使用 ;port.1或规定必须使用带花括号的 ifport.2例如 /* port.1 */ if (1)INT_SWAP(var_a, var_b) else {printf(hello world!\n); }/* port.2 */ if (1) {INT_SWAP(var_a, var_b); } else {printf(hello world!\n); } 可见不使用 ; 的调用方式无论从程序阅读还是使用方法方面都是十分别扭的而规定必须使用带花括号的 if 的调用方式有违常理的因为宏函数应该适用于任何语法。 优缺点总结 优点简单粗暴。 缺点不能在无花括号且有分支的 if 语句中直接调用能够不带 ; 直接调用。 3. do{...}while(0) 方式 INT_SWAP 宏使用 do{...}while(0) 封装后形态如下 #define INT_SWAP(a,b) \ do{ \int tmp a; \a b; \b tmp; \ }while(0) do{...}while(0) 表示只执行一遍 {} 内的语句表象来说与 {} 的功能是一致的。不同的是do{...}while(0) 可以提前退出函数宏、整合为一条语句与强制调用时必须使用 ;。 由于 do{...}while(0) 实际为 while 循环因此可以使用关键字 break 提前结束循环。利用该特性可以为函数宏添加参数检测。例如 #define INT_SWAP(a,b) \ do{ \if (a 0 || b 0) \break; \int tmp a; \a b; \b tmp; \ }while(0) 由于 do{...}while(0); 实际为一种语法编译器会把 do{...}while(0); 认为为一条语句。因此do{...}while(0) 方式的函数宏可以在无花括号且有分支的 if 语句中直接调用。例如 #define INT_SWAP(a,b) \ do{ \if (a 0 || b 0) \break; \int tmp a; \a b; \b tmp; \ }while(0)int main() {int var_a 1;int var_b 2;if (1)INT_SWAP(var_a, var_b);elseprintf(hello world!\n); printf(var_a %d, var_b %d\n, var_a, var_b); // var_a 2, var_b 1return 0; } C 语言规定do{...}while(0) 语法必须使用 ; 作为语句结尾。因此不可能存在以下语句的程序出现 if (1)INT_SWAP(var_a, var_b) else {printf(hello world!\n); } 优缺点总结 优点支持在无花括号且有分支的 if 语句中直接调用支持提前退出函数宏强制调用时必须使用 ;。 缺点无返回值不能作为表达式的右值使用。 4. ({}) 方式 ({}) 为 GNU C 扩展的语法非 C 语言的原生语法。 INT_SWAP 宏使用 ({}) 封装后形态如下 #define INT_SWAP(a,b) \ ({ \int tmp a; \a b; \b tmp; \ }) 与 do{...}while(0) 相同({}) 支持在无花括号且有分支的 if 语句中直接调用。例如 #define INT_SWAP(a,b) \ ({ \int tmp a; \a b; \b tmp; \ })int main() {int var_a 1;int var_b 2;if (1)INT_SWAP(var_a, var_b);elseprintf(hello world!\n);printf(var_a %d, var_b %d\n, var_a, var_b); // var_a 2, var_b 1return 0; } 与 do{...}while(0) 不同的是({}) 不能提前退出函数宏与支持返回值。({}) 毕竟不是 while 循环不能直接使用 break退出函数宏是比较容易理解。那支持返回值是什么意思呢 答案是 C 语言规定 ({}) 中的最后一条语句的结果为该双括号体的返回值。例如 int main() {int a ({10;1000;});printf(a %d\n, a); // a 1000 } 因此({}) 可以为函数宏提供返回值。例如 #define INT_SWAP(a,b) \ ({ \int ret 0; \if (a 0 || b 0) \{ \ret -1; \} \else \{ \int tmp a; \a b; \b tmp; \} \ret; \ })int main() {int var_a 1;int var_b 2;if (INT_SWAP(var_a, var_b) ! -1)printf(swap success !!\n); // swap success !!elseprintf(swap fail !!\n); printf(var_a %d, var_b %d\n, var_a, var_b); // var_a 2, var_b 1return 0; } 可见此时的 INT_SWAP 宏已与函数十分接近。 优缺点总结 优点支持在无花括号且有分支的 if 语句中直接调用有返回值支持作为表达式的右值。 缺点不支持提前退出函数宏非 C 的原生语法编译器可能不支持。 5. 总结 综上在 {}、do{...}while(0) 和 ({}) 这三种函数宏的封装方式之中应尽可能不使用 {}考虑兼容性一般选择使用 do{...}while(0)当需要函数宏返回时可以考虑使用 ({}) 或直接定义函数。 本文来源网络免费传达知识版权归原作者所有。如涉及作品版权问题请联系我进行删除。
http://wiki.neutronadmin.com/news/80735/

相关文章:

  • wordpress网站布局做女朋友网站
  • 网络服务提供者发现用户利用其网络服务对未成年网站关键词在线优化
  • 免费带后台的网站模板网站做子页面怎么做
  • 网站建设开发平台商机创业网2021创业
  • 网站建设开发价格高吗建立公司网页需要
  • 珠宝网站设计方案wordpress免费主机
  • 佛山建设网站海报设计说明
  • 免费网站主机西地那非片的功效和副作用
  • 模仿网站怎么防止侵权池州哪家做网站
  • 做第一个网站什么类型中小企业网站设计
  • 关于进一步加强网站建设和wordpress json插件
  • 魏县专业做网站开发一个app需要什么技能
  • 南通网站定制方案广告设计免费
  • 织梦网站首页文字修改简约 网站 设计
  • 专业室内设计 网站赣州广播电视台
  • 做此广告的网站宣传方案模板
  • 著名的深圳网站建设网页做好怎么变成网站
  • 招投标 网站建设 山西WordPress设置会话有效时间
  • 大连连城传媒seo外链建设
  • 360网站提交收录网址网站搜索引擎提交入口
  • 湖南省建设资源人才网站万江建设网站
  • 常州网站建设 个人集团网站设计专业团队
  • 网站建设方向课程wordpress漏洞视频
  • 做产品网站营销推广网站显示速度的代码
  • 网站加载特效网站开发实训报告
  • 陕西网站建设排名大门户wordpress主题破解版
  • 智慧团建网站注册登录入口品牌创意型网站开发
  • 电子商务作业做网站优化一个网站可以做多少关键词
  • lamp 网站建设论文长春建设网站
  • 多人运动免费正能量网站链接文章写作网站