黑马程序员-预处理指令

来源:互联网 发布:mysql查询不重复数据 编辑:程序博客网 时间:2024/05/21 16:55

黑马程序员

预处理指令      

1、宏定义       2、条件编译      3、文件包含

1》所有预处理指令都是以#开头

2》预处理指令在代码翻译成0和1之前执行

3》预处理指令位置随便写

4》作用域:从编写指令的那一行开始,一直到文件结尾


宏定义

1》不带参的宏定义

#define  宏名  字符串  //  用一个指定的标识符(即名字)来代表一个字符串

#define  宏名(一般用大写或以K开头)  4

#define  COUNT  4   //    从这一行开始把文件中所有的COUNT替换为4

#undef   COUNT       //     从这一行开始COUNT就失效

2》带参的宏定义

#define  sum(v1, v2)   ((v1)+(v2))


文件包含(#include)

1》定义:把指定的文件插入到该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连接成一个源文件。

2》系统自带的文件用#include <>,自定义的用#include " "

3》一个#include的命令只能指定一个被包含文件

4》文件包含允许嵌套,即在一个被包含的文件中可以包含另一个文件

5》被包含的扩展名可以不是.h文件


条件编译

第一种形式的格式为:
    #ifdef  标识符
        程序段1
    #else
        程序段2
    #endif

它的功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else可以没有,即可以写为:
    #ifdef  标识符
        程序段
    #endif

第二种形式的格式为:

    #ifndef 标识符
        程序段1 
    #else 
        程序段2 
    #endif
与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。这与第一种形式的功能正相反。

第三种形式的格式为:

    #if 常量表达式
        程序段1
    #else 
        程序段2
    #endif
它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能。






0 0
原创粉丝点击