预处理命令

预处理命令

一、宏定义:

  1、C语言标准允许在程序中用一个标识符来表示一个字符串,称为宏。标识符为宏名,在编译预处理时,将程序中所有的宏名用相应的字符串来替换,这个过程称为宏替换,宏分为两种:无参数的宏和有参数的宏。

  2、无参数宏

       无参数宏定义:#define 标识符字符串

       “#”代表本行是编译预处理命令。define是宏定义的关键词,标识符是宏名。字符串是宏名所代替的内容,可以是常数、表达式等。

预处理命令

  3、有参数宏

       有参数宏类似于有参数的函数,其定义为:#define 标识符(形参表)字符串

       如果有多个形参,像函数参数一样以逗号隔开:标识符(实参表)

预处理命令

二、文件包含

  1、文件包含是指把指定源文件的全部内容包括到当前源程序文件中。

  2、文件包含命令的形式为:#include "文件名"  或  #include <文件名>

  3、文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。

  4、文件包含命令中的文件名既可以用尖括号,也可以用双引号括起来。

       它们的区别在于查找指定文件的位置不同。

       尖括号只在缺省目录里找指定文件。

       双引号则是先在源程序文件所在的当前目录里查找指定文件,如果找不到再到缺省目录里找。

三、条件编译

  1、预处理程序提供了条件编译功能。可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。

  2、条件编译命令:

    (1)#ifndef 标识符

            程序段 1

            #endif

    (2)#ifndef 标识符

            程序段 1

            #else

            程序段 2

            #endif

    (3)#ifdef 标识符

            程序段 1

            #endif

    (4)#ifdef 标识符

            程序段 1

            #else

            程序段 2

            #endif

    (5)#if 表达式

            程序段 1

            #endif

    (6)#if 表达式

            程序段 1

            #else

            程序段 2

            #endif