我们知道C的代码必须先编译才能运行,比如以下一段代码:
/* width.c -- field widths */#include #define PAGES 959int main(void){ printf("*%d*", PAGES); printf("*%2d*", PAGES); printf("*%10d*", PAGES); printf("*%-10d*", PAGES); return 0;
这段代码在C Primer Plus 的这个位置:
![c2fbde6766d844550104275849169a58.png](https://i-blog.csdnimg.cn/blog_migrate/b7a3ab6e80f138c89b315fd7a693af80.jpeg)
我们读书的过程中,要验证这段代码的基本流程:
- 新建width.c文件,
- 将上面的代码敲进去(复制进去)
- cc编译
- 执行
换言之,读一本简简单单的书,但是验证的操作就占据绝大部分时间。
有没有办法,从文本中直接运行C的代码呢?从笔记中即时看到结果。
在Emacs中实现这一点,极其简单。
首先将 C Primer Plus这本书转成org文档,见下图:
![e445c504bb34ca686cb7b918a2b4a884.png](https://i-blog.csdnimg.cn/blog_migrate/805adf1ea1de9bc43555184d236d4490.jpeg)
将代码用babel-block囊括起来。
#+BEGIN_SRC C :results output /* width.c -- field widths */#include #define PAGES 959int main(void){ printf("*%d*", PAGES); printf("*%2d*", PAGES); printf("*%10d*", PAGES); printf("*%-10d*", PAGES); return 0;}#+END_SRC
接下来,只需要在代码块中直接按键C-c C-c就能即时输出结构。
![b027679810679a6c3192a4b3e2d24f95.png](https://i-blog.csdnimg.cn/blog_migrate/cf4d214a989cf7c42df53d2cbf0a288f.jpeg)
如图,提示Code block evaluation complete并直接输出结果。
如此以来,读书的效率得到百倍提升。