宏替换
可以预定义代码块什么的,还可以传递参数
#include "csapp.h"
#define NAME(A) "hello"#A
#define FOR(i,start,end) for(int i=start;i<=end;i++)
#define MAX(A,B) A+B+9
#if 1
#define P printf
#endif
#define swap(t,x,y) {int t;t=x;x=y;y=t;}
int main()
{
int a=1;
int b=2;
swap(t,a,b);
P("%d->%d\n",a,b);
FOR(k,1,2) {
puts(NAME(TOm));
P("%d->%d\n",k,MAX(k,k));
};
}
条件包含
#if
对常量表达式进行求值
#if expr
#define P printf
#endif
只有expr是0时才不包含其中的定义。
#ifndef
用来测试某个名字是否已经定义,经常用于头文件,避免多次包含同一头文件
#ifndef OS_CSAPP_H
#define OS_CSAPP_H
#include <stdio.h>
#endif //OS_CSAPP_H
程序块结构
{
int t;
t = a;
a = b;
b = t;
};
其中t对外部不可见
网友评论