例9.5
#define PR printf
#define NL "\n"
#define D "%D"
#define D1 D NL
#define D2 D D NL
   #define D3 D D D NL
#define D4 D D D D NL
#define S "%S"
main()
{int a,B,C,D;
 char string[]="CHINA";
 a=1;B=2;C=3;D=4;
 PR(D1,a);
 PR(D2,a,B);
 PR(D3,a,B,C);
 PR(D4,a,B,C,D);
 PR(S,string);

运行时输出以下结果:
1
12
123
1234
CHINA
程序中用PR代表printf。以NL代表执行一次“换行”操作。以D代表输出一个整型数据的格式符。以D1代表输出完1个整数后换行,D2代表输出2个整数后换行,D3代表输出3个整数后换行,D4代表输出4个整数后换行。以S代表输出一个字符串的格式符。可以看到,程序中写输出语句就比较简单了,只要根据需要选择已定义的输出格式即可,连printf都可以简写为PR。