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

潍坊高新区建设局门户网站做投资的网站好

潍坊高新区建设局门户网站,做投资的网站好,用户界面设计案例,昆明做网站vr一#xff1a;背景 如果大家看过 CLR 源码#xff0c;会发现里面有很多 #define 宏定义,比如说 fusionhelpers.hpp 头文件里。如果你不熟悉 C #xff0c;看到这些 #define 应该会很晕的#xff0c;这篇我们就来简单聊聊 define 的玩法#xff0c;其实说白了很简单, #defi… 一背景 如果大家看过 CLR 源码会发现里面有很多 #define 宏定义,比如说 fusionhelpers.hpp 头文件里。如果你不熟悉 C 看到这些 #define 应该会很晕的这篇我们就来简单聊聊 define 的玩法其实说白了很简单, #define 就是用一个标识符来包装一段 常量 或者 函数体后续要复用这段逻辑时只需用此 标识符 即可。这里要注意的是替换发生在 编译时如果不相信的话可以从汇编上做验证。二define 的简单使用 1. 用 define 定义常量这个是最常用的上一段简单的测试代码#include iostream#define N 10int main() {printf(output: s%d, N); }output: s10接下来我们探究下它的汇编代码。00531921  push        0Ah   00531923  push        offset string s%d (0537B30h)   00531928  call        _printf (05310D2h)   0053192D  add         esp,8从汇编中可以看出并没有出现 N 标识符的影子而是直接将立即数 10 推送到栈上大概就是下面这样。printf(s%d, 10);相信大家也看到了这个简单替换如果你还不信的话我来演示一个 简单替换 的坑参考如下代码#include iostream#define N 102int main() {float f  N / 2;printf(output: s%.1f, f); }output: s11.0哈哈你是不是天真的以为上面的输出是 s6 ? 那就大错特错了这个例子很好的反向证明了 确实是 替换 所致。接下来我们来看下底层汇编是咋样的。00f11925  movss   xmm0, dword ptr [ConsoleApplication1!_real (00f17b44)] 00f1192d  movss   dword ptr [ebp-8], xmm00:000 dp 00f17b44 L1 00f17b44  413000000:000 .formats 41300000 Evaluate expression:Hex:     41300000Decimal: 1093664768Octal:   10114000000Binary:  01000001 00110000 00000000 00000000Chars:   A0..Time:    Sat Aug 28 11:46:08 2004Float:   low 11 high 0Double:  5.40342e-315从汇编代码看f 的值已经算好了存放在 00f17b44 地址上值为 41300000, 通过 .formats 命令可以看出 41300000 转成 float 就是 11很好的证明了它是在编译时就已经处理好了。有了这些基础改进方案就简单了用 () 将 define 体包装一下即可参考如下#define N (102)2. 用 define 定义函数从 CLR 源码上看不仅仅可以定义 常量还可以定义复杂的函数接下来我们就演示一下。#include iostream#define SUM(a,b) abint main() {int a  10;int b  20;int sum  SUM(a, b);printf(output: sum%d, sum); }output: sum30然后再看一下 int sum SUM(a, b) 的汇编代码。00581925  mov         dword ptr [ebp-8],0Ah   0058192C  mov         dword ptr [ebp-14h],14h   00581933  mov         eax,dword ptr [ebp-8]   00581936  add         eax,dword ptr [ebp-14h]可以看到那个 Sum 方法直接被 inline 了高效哈如果语句多的话也可以在  #define 中用  {} 括起来比如下面这样。#include iostream#define SUM(a,b) {int ia; int jb; printf(output: %d%d%d,i,j,(ij));}int main() {int a  10;int b  20;SUM(a,b); }output: 102030好了今天就聊这么多希望对大家有帮助
http://www.pierceye.com/news/814306/

相关文章:

  • 怎么查看网站是用什么编程语言开发的品牌软文范文
  • 能够沟通业务的网站wordpress 主题 恢复
  • 动态域名做网站在线查询企业
  • 绍兴企业网站推广建设通是什么网站
  • 网站设计制作太原抖音seo怎么做的
  • 北京网站代理备案上海跨境电商网站开发公司排名
  • 您的网站未备案 或者原备案号被取消开发一个微信小程序多少钱
  • 如何用记事本做网站南宁做网站哪家好
  • 优秀网站首页百度账号怎么改名字
  • 杭州做网站排名软件碧桂园房地产最新消息
  • 上传网站空间天津专门做网站的公司
  • 无锡企业做网站大庆油田内网主页网址
  • 网站开发合同 下载山西正规网站建设报价公司
  • seo好的外贸网站怎么用wordpress建立本地网站
  • 网站备案号查询有名vi设计公司
  • 呼市做网站建设的公司哪家好易班班级网站建设展示PPT
  • 网站制作精品案例欣赏中国建设局网站首页
  • 几分钟做网站网站网格布局
  • 为企业做网站策划案网站建设 爱诚科技公司
  • 怎么把网站放到阿里云做网站外链需要多少钱
  • 南宁市网站建设公司给人做网站网站
  • 怎么查网站的备案号网站页面设计需求
  • 手机网站怎么做的好网页设计参考书籍
  • 网站建设和网络推广方案网站建设技术可行性分析
  • 免费建站网站自助建站的网站建站淘宝网站开始怎么做的
  • 旅游电网站建设目标公司注册成本
  • 建设婚恋网站基本功能有哪些毕业设计网页
  • 广州贸易网站杭州关键词推广优化方案
  • 怎么注册自己的网站wordpress静态设置
  • 网站收录有什么好处仿糗事百科wordpress