预处理等等

首先,宏是C编译系统的预处理,何谓“预”?即是正式工作开始之前的准备工作。

  所以宏替换是在对程序编译之前进行的。

  其次,C程序由源程序变为可执行文件的三个阶段是:

  预处理阶段,由预处理器对程序文本中的宏进行展开。

  编译阶段,由编译器对经过预处理后的程序进行编译,并生成目标文件

  链接阶段,则链接器对目标文件和用到的函数库文件进行链接,生成可执行文件。

  因此,宏展开是在预处理阶段完成的。

编译阶段的优化:
  死代码删除,永远也不会执行的代码,如while(false),不包括删除注释
  强度削弱:在执行时用强度较短的指令替换强度较长的指令



内联函数和宏的区别:
  1.内联函数在编译时展开,只是一种对编译器的建议;而宏则是在预处理阶段,直接替换
  2.内联函数更近乎函数,可以在运行时调试,可以进行类型检查,自动类型转换;而宏定义则不行
内联函数和普通函数的区别:
  1.内联函数会在编译时展开,不需要拷贝实参,不需要保存寄存器,也就是不需要函数调用的进栈出栈操作,执行效率比较高
posted @ 2017-02-15 10:15  LT.C#  阅读(191)  评论(0编辑  收藏  举报