预处理器

预定义符号
-FILE- 进行编译的源文件
-LINE- 文件当前的行号
-DATE- 文件被编译的日期
-TIME- 文件被翻译的时间
这些预定义符号都是语言内置的。
#define
使用define指令,你可以把任何文本替换到程序中。
eg:

#define reg         register   //简短的别名使各个声明更容易通过制表符进行排列
#define do_forever  for(;;)    //用更具描述性的符号来代替一种用于实现无限循环
#define CASE        break;case //简短记法,以便在switch中使用
#define 定义标识符
#define name stuff   //若stuff非常长,它可以分成几行,除了最后一行外,每行的末尾都要加一个反斜杠。
#define 定义宏
#define SQUARE( x ) x * x
SQUARE( 5 )
int a = 5;
printf("%d\n" ,SQUARE( a + 1) );  
//实际输出情况printf (“%d\n”,a + 1 * a + 1 );打印11

#define SQUARE(x)  (x)  * (x)
//避免上述问题 打印36
总结:所有用于对数值表达式求值的宏定义都应该用这种方式加上括号,避免在使用宏时,由于参数中的操作符或邻近的操作符之间不可预料的相互作用。

# 用于将参数插入到字符串中

#define PRINT(x)
printf("the value of "#x" is %d",x)
int main()
{
int b=0;
p
PRINT(b);
}
输出 The value of x is 0

##把位于它两边的符号连接成一个符号

```
#define ADD_TO_SUM(sum_number,value)\
       sum##sum_number+=value
       ...
       ADD_TO_SUM(5,25)
       把值25加到变量sum5,输出30

带副作用的宏参数

x+1   //重复执行,每次获得结果一样,不具副作用
x++   //表达式执行下一次时,将产生不同的结果,具有副作用
#define  MAX(a,b) ((a)>(b)?(a):(b))
...
x=5;
y=8;
z=MAX(x++,y++);
printf("x=%d,y=%d,z=%d\n",x,y,z);
输出 x=6 y=10 z=9
析:宏替换后
z=((x++)>(y++)?(x++):(y++)
y第一次增值是在比较时,第二次增值是在执行?符号后面的表达式时出现。

条件编译

头文件的开头写
#ifndef __TEST_H__
#define __TEST_H__
//头文件的内容
#endif //__TEST_H__

避免头文件的重复引入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值