Chinaunix首页 | 论坛 | 博客
  • 博客访问: 283162
  • 博文数量: 68
  • 博客积分: 125
  • 博客等级: 入伍新兵
  • 技术积分: 606
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-12 15:35
文章分类

全部博文(68)

文章存档

2014年(5)

2013年(59)

2012年(4)

分类: C/C++

2013-03-25 20:29:50

1.预处理命令(preprocessor dircetives):
预处理命令不是C语言的组成部分,不能直接对他们进行编译。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理”,即根据于楚林命令对程序做相应的处理。经过预处理后程序不在包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。

1.1 宏定义:用一个指定的标识符来代表一个字符串

1.1.1 不带参数的宏定义,一般形式为:
#define 标识符 字符串
标识符又称“宏名”(一般用大写字母,未被分配存储空间),在预编译时将宏名替换成字符串的过程称为“宏展开”。该语句后面不加分号(因为它不是c语言语句)。该语句的作用域到本源文件结束,但
#undef
可以终止宏定义的作用域
再:对程序中用双引号括起来的字符串内的字符,即使与宏名相同,亦不替换。

1.1.2  带参数的宏定义,一般形式为:
 
#define 宏名(参数表) 字符串

例:
#define PI 3.1415926
#define S(a) PI * a * a
void main() {
float a, area;
a=3.6;
area=S(a);
printf("r=%f\narea=%f\n",a, area);
}

程序中:area=3.1415926 * a * a;

1.2 文件包含,语法如下:
#include "filename":现在当前目录下查找文件filename,未找到则去系统目录下查找
 
#include :直接在系统目录下查找

一个#include语句只能指定一个被包含文件,如果文件1包含文件2,文件2包含文件3,则可在文件1中用两个#include命令分别包含文件2和文件3,而且文件3应出现在文件2之前,文件1预处理命令如下:
#include "文件3"
#include "文件2"

1.3 条件编译

源程序中的一部分内容只在满足一定条件下才进行编译,形式如下:
#ifdef 标识符
    程序段1
#else
    程序段2
#endif
当指定的标识符已经被#define命令定义时,则在程序编译阶段只编译程序段1,否则编译程序段2.

#ifndef 标识符
    程序段1
#else
    程序段2
#endif
作用:若标识符未被定义过则编译程序段1,否则编译程序段2

#if 表达式
    程序段1
#else
    程序段2
#endif

当表达式为真时,编译程序段1;否则,编译程序段2。



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

樱木的追风者2013-05-23 21:13:39

seek_0380:博主总结的很好,很全!

谢谢哈,多交流哈

回复 | 举报

seek_03802013-04-05 09:22:19

博主总结的很好,很全!