3.3.2 Emacs的编译概述
正如本节前面所提到的,Emacs不仅仅是个强大的编译器,它还是一个集编译、调试等于一体的工作环境。在这里,读者将会了解到Emacs作为编译器的最基本的概念,感兴趣的读者可以参考《Learning GNU Emacs,Second Edition》进一步深入学习Emacs。
1.Emacs中的模式
正如本节前面提到的,在Emacs中并没有像Vi中那样的“命令行”、“编辑”模式,只有一种编辑模式。这里所说的“模式”,是指Emacs里的各种辅助环境。下面就着重了解一下C模式。
当我们启动某一文件时,Emacs会判断文件的类型,从而自动选择相应的模式。当然,用户也可以手动启动各种模式,用功能键“M-x”,然后再输入模式的名称,如图所示3.8所示就启动了“C模式”。

图3.8 Emacs中选择模式
在强大的C模式下,用户拥有“自动缩进”、“注释”、“预处理扩展”、“自动状态”等强大功能。在“C模式”下编辑代码时,可以用“Tab”键自动的将当前行的代码产生适当的缩进,使代码结构清晰、美观,它也可以指定缩进的规则。
源代码要有良好可读性,必须要有良好的注释。在Emacs中,用“M-”可以产生一条右缩进的注释。C模式下是“/* comments */”形式的注释,C++模式下是“// comments”形式的注释。当用户高亮选定某段文本,然后操作“C-c C-c”,就可以注释该段文字。
Emacs还可以使用C预处理其运行代码的一部分,以便让程序员检测宏、条件编译以及include语句的效果。
2.Emacs编译调试程序
Emacs可以让程序员在Emacs环境里编译自己的软件。此时,编辑器把编译器的输出和程序代码连接起来。程序员可以像在Windows的其他开发工具一样,将出错位置和代码定位联系起来。
Emacs默认的编辑命令是对一个make(在本章3.6节中会详细介绍)的调用。用户可以打开“tool”下的“Compile”进行查看。Emacs可以支持大量的工程项目,以方便程序员的开发。
另外,Emacs为Gdb调试器提供了一个功能齐全的接口。在Emacs中使用Gdb的时候,程序员不仅能够获得Gdb用其他任何方式运行时所具有的全部标准特性,还可以通过接口增强而获得的其他性能。







