首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

本书后面的谜题都是以下面的预处理器语句开头:

#include "defs.h"

在编译程序的时候,预处理器会把这条语句替换为defs.h文件的内容,使得defs.h文件里的定义在程序里生效。下面是defs.h文件的内容:

#include <stdio.h>

#define PR(fmt,val) printf(#val " = %" #fmt "\t",(val))

#define NL putchar (’\n’)

#define PRINT1 (f,xl)  PR(f,x1), NL

#define PRINT2 (f,x1,x2)  PR(f,x1), PRINT1 (f,x2)

#define PRINT3 (f,x1,x2,x3)   PR(f,x1), PRINT2 (f,x2,x3)

#define PRINT4 (f,x1,x2,x3,x4)   PR(f,x1), PRINT3(f,x2,x3,x4)

defs.h文件里的第一行代码也是一条include语句,该语句将把C语言的标准I/O函数库(即stdio.h文件)导入到程序里。defs.h文件里的其余内容是一些用于输出的宏。比如说,要想把数值“5”输出为一个十进制整数,就需要用下面的表达式来调用PRINT1宏命令:

PRINT1(d, 5)

这个调用先扩展为:

PR(D, 5), NL

然后再扩展为:

printf(#5 " = %" #d "\t", (5)), putchar(’\n’)

最后成为:

printf("5 = %d\t", (5)), putchar(’\n’)

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论