您的位置:首页 > 其它

三种预处理功能:宏定义 文件包含 条件编译

2018-08-16 19:44 190 查看

C提供的三种预处理功能:宏定义  文件包含  条件编译

.................................................................................................................................................................................................  

    宏定义: #define 标识符 字符串

             eg.   #define   PI     3.14      

 宏的概念的关键是“换”,如上,就是将程序中所有的PI替换成3.14.

 

    宏还可以定义函数:    

              eg.   #define MAX(a,b) ((a) > (b) ? (a) : (b))    //   那么在程序中只要碰到MAX(a,b)就是直接返回两者的最大值。不用再写求最值的函数。

             eg.   #define  PRINTIF(n) {    while(n) {  printf("%d\t",n);    (n) = (n) - 1; }     }   //若是多条语句则多条语句要用{ }括起来

             eg.   #define PRINTSTR(str)           printf("%s\n",str); 
   

............................................................................................................................................................................................

 文件包含:#include “  xxx.h  ”   或#include<  xxx.h >

   本地头文件用#include “    ”   ,函数库头文件两种都可以,如#include<  stdio.h >  #include"stdio.h"。

.............................................................................................................................................................................................

条件编译:

形式一:                                   //根据不同的宏定义来条件选择编译

#if  表达式1                         //理解为如果满足表达式1 则执行程序段一,如果满足表达式2则执行程序段2

        程序段1

#elif  表达式2

       程序段2

#endif

形式二:                               //用于头文件中的内容,避免重复声明和定义。

#ifndef <标识>    //标识的命名规则一般是头文件名全大写,前面加下划线,并把文件名中的“.”也变成下划线

#define <标识>

..........

#endif

 

<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前面加下划线,并把文件名中的“.”也变成下划线,如:a.h               _A_H

     

  #ifndef A_H意思是"if not define a.h"  如果不存在a.h

  #define A_H  就引入a.h

  #endif   否则不需要引入

              

                               

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐