选择C++编辑器的几大要素

开发 后端
C++编辑器功能强大之处就是通过用户添加一些扩展包,lisp脚本来实现的。如何正确配置和修改是非常有必要的。

C++编译器已与另一个编辑器和其他程序捆绑进一个交互的开发环境IDE中,要进行C++开发,第一件事情就是选择一个合适的C++编辑器C++编辑器选择有几个要素:

1)减少不必要的编辑动作,减少编辑的时间。一切能够无二义性描述出来的编辑任务,都可以而且应该能被自动化。例如,每一个C++程序都会有一个main函数;我们在定义.h文件时,都希望加入一些预处理指令#define来帮我们解决重复引用同一个头文件而带来的麻烦。

鼠标操作总是比键盘操作要慢的。这方面EMACS做得可算是到了极致。所以, EMACS用户经常会吹嘘:他们编辑的速度等同于他们思考的速度。

2)可扩展性高。
程序员预期的C++编辑器应该能提供一些编程的帮助,例如,语法高亮,自动补齐,自动排版,语法检查等等。留心观察一下gedit, vim, emacs, ultraEdit,就会发现它们提供的远不是windows 记事本,写字板提供的那么简陋的功能。

对于一种新的语言,新的语法,它们应该能很方便地提供支持,而不停留在一种或几种固定的语言上。

3)用户可定制性高。
如果想长期从事研发, 特别是linux/unix下研发的话,那么你很有必要学好一个功能足够的C++编辑器。有这么一句话:Linux下程序员分为三种,使用emacs的,使用vi的,还有其它。

EMACS是Stallman用lisp语言写的一个GPL的C++编辑器。我们这里所说的emacs指的是GNU emacs,而非Xemacs。由于它的开放性,我们可以把它打造成一个功能强大的IDE。我们在安装好CGYwin之后,也可以在Windows系统下使用 EMACS。CGYwin和MINGW是第三方写的一个在Windows系统上模拟POSIX系统的工具。

EMACS与其说的是一个C++编辑器,倒不如说它是一个操作系统。我们可以用它来写编程,写wiki,收发邮件等等。EMACS主要是通过两种方式来进行扩展:el脚本(elisp是lisp的一种方言)和第三方扩展包。EMACS的入门成本很高。

C++编译器首选GCC(GNU COMPILER COLLECTION)。原因有两个,它是GNU开源的,同时它对标准C++的支持度高达96.15%。而VC++6.0的支持度只有83.43%。 GCC不仅是通常意义上的C或C++的C++编译器,它还可以编译java等其它语言。gcc是gnu c的C++编译器,g++是gnu c++的C++编译器, 而EGCS(Enhanced GNU Compiler Suite)可以认为是gcc的改进版。

我们可以通过一条编译指令来完成所有步骤。也可以分步执行。gcc有三个重要选项-E(只进行预处理), -S(生成汇编代码), -g(生成带原代码调试符号的可执行文件,如果想用gdb调试的话,就应该在编译时打开这个选项)。
GCC可以看作一个软件包,除了编译工具,它还集成了调试器gdb,性能分析工具gcov, gprof。

只要我们装好了GCC,这些强大工具就可以直接使用了。通过gcov,我们可以查看一个程序,源代码中每行代码的运行次数。我们优化运行次数最多的代码,那么就可以大大优化程序。使用gcov时,需要打开 GCC的fprofile-arcs和ftest-coverage两个选项。gcov中常用的选项有-b分支统计信息。

通过gprof工具,我们可以查看函数之间的调用顺序,及各个函数运行的时间。我们可以将gprof理解为linux/unix自带工具time的加强版。使用gprof时,需要打开GCC的pg选项。

gcov和 gprof的共同点是在编译程序时,加入自己的一些辅助信息,由此来进行程序诊断。除了,这些优化手段,我们还可以使用一些内存泄漏工具,来减少野指针,未释放的内存空间。 #t#

GDB即GNU的调试器,它是GCC附带的一个性能优质的调试器。通过GDB和脚本结合,我们可以很好的实现回归测试。
GDB可以运行于CLI和GUI两种模式。

默认GDB是CLI模式的,我们可以去下载和安装GUI模式的GDB,例如xxgdb, ddd等。一个更好的方式是在 EMACS中使用GDB。

C++编辑器包括visual studio工具的所有调试功能,还包括它没有的功能。它除了支持,我们一般的设置断点,单步跟踪,step in, step out, step over等,还有一些强大的功能。在gdb中,我们可以有以下几种暂停方式:断点(BreakPoint)、观察点(WatchPoint)、捕捉点(CatchPoint)、信号(Signals)、线程停止(Thread Stops)。

责任编辑:chenqingxiang 来源: NET130
相关推荐

2010-01-26 17:27:58

C++C程序

2011-05-13 18:10:55

CC++

2010-05-28 13:53:41

Linux开发工具

2010-05-12 14:40:07

移动统一通信

2021-07-05 09:18:08

UPS电源

2016-08-24 20:29:17

LinuxC编辑器

2010-05-28 14:14:37

Linux开发工具

2015-03-03 10:41:43

2012-05-28 10:38:25

imo即时通讯

2013-01-05 13:40:27

2011-01-10 16:17:49

2010-01-27 15:36:54

C++异常处理

2011-06-29 10:13:49

服务器灾难恢复

2010-01-25 18:05:40

C++语言

2010-02-23 15:52:14

Python编辑器

2010-03-24 09:20:07

CentOS vi编辑

2023-06-12 08:22:56

图形编辑器工具

2010-04-25 21:58:24

NTFS权限

2022-06-20 08:00:00

Kubernete容器集群

2022-07-06 09:54:27

物联网安全物联网
点赞
收藏

51CTO技术栈公众号