c语言中预编译是什么意思,求C语言中预编译命令表?

1 宏定义即是字符串替换。宏分为无参宏和含参宏。定义宏的位置可以在函数外部也可以在函数内部(vc 2008 测试通过)。宏的作用域是从定义处到取消定义命令[#undef 宏名]之间的部分,若无显式的#undef命令则默认到文件结束。可以使用defined命令可以判断宏是否被定义#if defined X (=#ifdef X),#if !defined X (= ifndef X)。

定义含参宏格式如#define SQ(y) ((y)*(y)),其中参数为y,宏得到的是y平方。为了保证宏替换的正确性,多加了3个括号。但这样的保证也是有限的,它要求y的值不能在(y)内改变,如把y换成i 将得不到期望的结果。 宏调用(实际上是宏替换)不用考虑形参的类型,这带来一定的好处。

如求两个数最大值的宏#define MAX(a,b) (a>b)?a:b,实参可以是int,double等。宏定义可以包括多个语句,如#define CHANGE(X1,X2,X3,X4) X1 = 1;X2 = 2; X3 = 3; X4 =4; 2 文件包含命令#include的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。

源代码分布于多个文件时,建议使用调用文件 头文件 实现文件的模式。头文件中包含要用到的函数说明,类型定义,宏定义,常数值等。具体的实现放在实现文件中。在调用文件和实现文件中都包含该头文件即可。为了避免重复包含头文件,可在头文件中使用#ifndef [头文件标示符(如X_Header等等)] 头文件内容 #endif模式。

3 条件编译命令可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。 这对于程序的移植和调试很有用。条件编译有三种形式,下面分别介绍:

第一种形式根据有无对应宏定义选择编译程序段:

#ifdef 标识符 // 或 #ifndef 标示符

程序段1

#else

程序段2

#endif  第二种形式根据常量表达式值选择编译,值为非0执行if段。

#if 常量表达式

程序段1

#else

程序段2

#endif

这里一定要是常量表达式,一般为宏。若是表达式包含变量则编译器只能随便猜一个了。

第三种形式含有#elif,看个例子吧#define ABC 3

void main(){#if  ABC>0

int a=1;

printf("%d/n",a);

#elif ABC<0

int b=-1;

printf("%d/n",b);

#else

int c=0;

printf("%d/n",c);

#endif

}  其余的预编译命令如下,这里就不研究它们了。

#line 标志该语句所在的行号

# 将宏参数替代为以参数值为内容的字符窜常量

## 将两个相邻的标记(token)连接为一个单独的标记

#pragma 说明编译器信息#warning 显示编译警告信息

#error 显示编译错误信息。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值