码迷,mamicode.com
首页 > 编程语言 > 详细

C++基础---C语言部分4

时间:2016-02-28 11:03:47      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:

一、编译预处理:

1.宏定义:  以  #define 开始,分为带参数和不带参数两种。

  不带参数的宏定义:   #define   PI   3.14

  宏替换只是宏名誉字符串之间的简单替换,不做其他任何数据类型和合法性检查,也不分配内存空间。

  带参数的宏定义:    #define    MUL(x , y)    (x)*(y)

  注意:写带参数宏定义时,宏名与左括号之间不能出现空格,否则空格右边的字符都回作为替代字符串的一部分。

    #define  ADD     (x,y)    x+y    //会认为把ADD宏替换成   (x,y)   x+y

  带参数的宏与函数的区别:

  1. 函数调用在程序运行时处理,在栈中分配内存单元。宏带环则是在编译前进行的,在替换时并不分配内存单元,不进行值传递,没有返回值得概念。
  2. 函数调用时,先计算出实参表达式的值,然后赋值给形参。而宏只是进行简单的替换,不做任何计算。
  3. 函数中的形式参数和实际参数都要有类型,且两者要一致,如果不一致,系统将自动进行类型转换。而宏不存在类型问题。
  4. 宏替换只占用编译时间,因为实在编译前完成的,而函数调用要占用运行时间。

#define   #undef(undef提前终止宏定义的作用域)。

2.文件包含:    #include  <文件名>或  #include "文件名"

3.条件编译:只编译原程序中满足条件的程序段。1.使生成的目标程序短小,减少程序运行时内存。2.方便调试。

  • 根据宏名是否已经定义来确定是否编译某些程序段
  • //暂时跳过去

 

C++基础---C语言部分4

标签:

原文地址:http://www.cnblogs.com/zhouhang/p/5224145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!