C语言程序设计——9,预处理命令

    以“#”开头的预处理命令一般都放在函数之外,而且一般放在源文件前面,他们成为预处理部分。

    预处理指的是进行编译的第一遍扫描(语法扫描和语法分析)之前所作的工作。它由预处理程序负责完成。当对一个源文件进行编译时,系统自动引用预处理程序对预处理部分进行处理,处理完毕后自动进入对源程序的编译。

    C语言的预处理功能主要有:

  • 宏定义
  • 文件包含
  • 条件编译

宏定义

    用一个标识符来表示字符串,称为“宏”,标识符称为宏名。在编译预处理阶段,所有宏名会被宏定义中的字符串替代,称为“宏展开”或“宏代换”。宏分为无参宏和有参宏。

   无参宏定义

    宏名后不带参数

    格式:#define 标识符 字符串

    字符串可以是常数、表达式、格式串,为了宏代换不出现错误,字符串最好加括号

    宏定义作用域为宏定义命令到源程序结束,可以用#undef提前终止作用域

    带参宏定义

    格式:#define 宏名(形参表)    字符串

文件包含

    作用是把指定文件插入命令行位置取代命令行,从而把指定文件和当前源程序文件连成一个源文件。

    格式:#include "文件名"

              #include <文件名>

    使用<>表示在包含文件目录中去查找(包含目录是用户在设置环境时设置的),而不在源文件目录查找。

    使用“”表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。

条件编译

    条件编译功能可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。对于程序的移植和调试很有用。

    三种形式

    1、

  #ifdef 标识符
      程序段1
  #else            //若程序段2为空,则可以省略
      程序段2
  #endif

    2、

  #ifndef 标识符    //if no define
      程序段1
  #else            //若程序段2为空,则可以省略
      程序段2
  #endif

3、

  #ifdef 常量表达式  //根据常量表达式的值判断
      程序段1
  #else            //若程序段2为空,则可以省略
      程序段2
  #endif


 
  


    

你可能感兴趣的:(C语言程序设计——9,预处理命令)