Chinaunix首页 | 论坛 | 博客
  • 博客访问: 309913
  • 博文数量: 55
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 615
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-07 13:47
文章分类
文章存档

2011年(1)

2010年(2)

2009年(14)

2008年(38)

我的朋友

分类: C/C++

2008-04-23 20:08:05


三种预处理命令

       执行宏定义(替换)

              简单宏定义

                     define 宏名    串(宏体)

                     如:#define PI 3.14159

              宏定义的作用

                     宏定义后,该程序中宏名就代表了该字符串

              说明

                     #undef 终止宏定义的作用于:

                     如:#undef PI

              宏定义的嵌套使用

                     #define R 3.0

                     #define PI 3.1415926

                     #define L 2*PI*R   /*宏体是表达式*/

                     #define S PI*R*R

                     int main()

                     {

                            printf(“L=%f\nS=%f\n”, L, S);

                            return 0;

                     }

              带参数的宏定义

                     一般形式:

                            #define 宏名(参数表)   字符串

                            如:#define S(a,b) a*b

              带实参的宏名展开时,宏名被宏体替换,宏体中的形参按从左到右的顺序被实参替换           如:area=S(3,2);展开为:area=3*2;

              宏定义与函数的区别总结:      

                            引用宏只占编译时间,不占运行时间;

                            引用宏没有返回值

                            如:

                                   #define squ(u)   n*n

                                   int main(void)

                                   {printf(“%f\n”, 27.0/squ(3.0));}         

                            宏名与形参无类型,只是一个符号代表

                            实参为表达式:

                                   函数调用是先计算出实参的值,再将值传递给形参;宏的引用是用                                       用表达式替换形参

                                   如:定义:#define S(a,b)     a*b

                                          引用:S(a+c, b+c)

                                          展开:a+c*b+c

                                  

       包含文件

              文件包含预处理(#include

                     一个源文件可以将另一个源文件的全部内容包含进来

                     #include 命令有两种格式

                            #include <文件名> 包含标准头文件(/usr/include下的)

                     #include “文件名

                            包含自定义的头文件(在当前目录)

       条件编译

              控制条件为常量表达式的条件编译形式一

                     #if 常量表达式

                            程序段

                     #endif

                     功能:   

                            常量表达式非0时,程序段被编译。否则程序段不被编译。

              控制条件为常量表达式的条件编译形式二

                     #if 常量表达式

                            程序段1

                     #else

                            程序段2

                     #endif

                     功能:略

              控制条件为常量表达式的条件编译形式三

                     嵌套形式:

                            #if 常量表达式1

                                   程序段1

                            #elif 常量表达式2

                                   程序段2

                            ……

                            #elif 常量表达式n

                                   程序段n

                            #else

                                   程序段n+1

                            #endif

              控制条件为定义标识符的条件编译形式一

                     #ifdef 标识符

                            程序段

                     #endif

                     功能:

                            当标识符在该条件编译结构前已经定义时,程序段被编译,否则,程序                                段不被编译

              控制条件为定义标识符的条件编译形式二

                     #ifdef 标识符

                            程序段1

                     #else

                            程序段2

                     #endif

                     功能:略

              控制条件为定义标识符的条件编译形式三

                     #ifndef 标识符

                            程序段1

                     #else

                            程序段2

                     #endif

                     功能:略

 

      

                                         

             

 

                           

                           

 

阅读(1016) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~