C语言的开发环境


10

寻找有关为C开发建立方便而高效的开发环境的想法。我发现使用Vim进行C编辑非常有帮助,但是我想获得更多建议。


@txwikinger同意,我只是不想成为这里的CW警察的第一名:)。或创建[主观标签]的标签,该标签需要死于痛苦的死亡
Michael Mrozek

那里已经有社区维基。因此,没有任何借口:)而且我已经创建了主观标签,因此您的所有烦恼都消除了。请立即检查社区Wiki :)
txwikinger 2010年

@txwikinger现在实际上不建议使用,因此我从所有发布它的帖子中将其删除了
Michael Mrozek

Answers:


12
  • Emacs / Vim / Eclipse / ...-我个人是Emacs用户。如果您发现控制序列使您的小指感到疲倦,则只需在Viper-Mode上进行设置即可。Emacs很好地集成到了unix中,可以非常容易地从一个地方控制所有内容。Vim在这里也做得很好,但是我发现Elisp是比Vim Script更强大的扩展语言。一个小时可以谈论建立Emacs进行C开发的所有方法。 提到了Flymake模式,这是事物的超级开始。我不熟悉Eclipse,我找不到它在屏幕上留出足够的空间来存储代码,也不喜欢它有多肿(Vim用户会对Emacs持同样的看法)。出于纯粹的美学原因,我也不公平地反对使用Java编写的任何内容。

  • Ctags-标记您的C(或许多其他语言)函数,以便Vim或Emacs或其他可以在文件中进行一些超文本链接。假设您在四处游荡,看到一个功能,然后挠头说:“那个又做什么了?命名有点含糊。” Plink-plank-plunk,您可以直接更改其定义。

  • Cmake / Gnu-Autotools -Make很不错,但是在某些时候,您需要稍微抽象一些东西,以便您的项目可以在您无法测试的各种系统上进行构建。如果您只需要人们在* nix上构建代码,Autotools就是很好的选择,但是,实际上,您还是应该熟悉Cmake。Cmake团队会在所有可能的配置中构建代码,并确保您不必费力。如果您希望您的项目容易被他人收购,那么这些工具之一至关重要。

  • Git / Mercurial / Subversion / ...-您可能需要花费数月的时间来研究版本控制软件,但您可能应该只使用Git。它是可靠的,它是分布式的,使用它跟踪@ $!#%&Linux内核。如果对Linus足够好,那么对您也必须足够好。我也听到了有关Mercurial的好消息,显然G ** gle使用了它们,因此可能还不错。有些人似乎喜欢Subversion和CVS等。我不喜欢它们,因为它们是整体的,这对我来说非常不便且有局限性。

  • Stumpwm / wmii / XMonad / ...-在某些时候,您将意识到可以做的一切事情都可以极大地提高您的输出。防止大脑破裂的最好方法之一是切换到平铺的,键盘驱动的窗口管理器。我是窗口管理器Emacs StumpWM的个人粉丝。通过即时可定制的Common Lisp流程完全实现,您发现自己重复做的任何事情都可以放逐到函数中并绑定到命令。好东西。我对其他任何一个都不太了解,但是最好进一步细化到另一个线程。尽可能使用键盘。

  • GDB-我对其他调试器不熟悉,但这似乎是事实上的标准。

  • Valgrind-我不知道有什么能做得很好。对于您想要进行的所有烦人的性能分析/内存泄漏搜寻,Valgrind至关重要。如果没有Valgrind,就无法使用malloc / calloc编写代码。


我将Linux性能计数器(perf.wiki.kernel.org/index.php/Main_Page)和/或Oprofile(oprofile.sourceforge.net/news)添加到该列表中。
马克·普罗布斯特

我只是将其设置为社区Wiki,因此您可以在其中添加它们,但是您觉得合适。Performance Counter看起来仅是Linux?我希望确认/否认,但是如果是这样,至少应该在建议中加以说明。
伊莱·弗雷

2

我坚持使用Vim一段时间,值得了解VIM基础知识,因为您总会在某个只有UNIX框的地方找到UNIX框,但是我尝试了Emacs并且没有回头。Eclipse是“现代”的选择,我的系统上都有这三个!


2

这很大程度上是个人喜好,所以我认为除了告诉您使用什么之外,我无能为力。我为Emacs设置了Flymake模式,该模式会定期编译您正在处理的文件,并分析编译器输出以找出您犯了什么错误。它突出显示缓冲区中的错误/警告,并显示关联的编译器错误消息


2

我使用Kate(text)gcc / avr-gcc并使用Gi​​t作为VC进行制作。我主要在c和python的计算机端进行嵌入式工作。


2

如果要在Unix / Linux下进行C开发,则如果项目很大,则绝对必须使用Cscope

Cscope的是开发人员在使用浏览源代码的工具-跳转到函数foobar的定义,找到其中变量所有地方foo被引用,发现包括所有文件bar.h,更改的所有匹配barbaz

另外,您在帖子中提到了Vim ... 这是一起使用Vim和Cscope 的教程



1

我个人最喜欢的是exVim。它有很多vim插件,这使得使用大型代码库非常容易。我花了大约1天的时间来学习它的功能,但这是值得的。


1

我在控制台中用Vim编辑C。我使用了makefile,并使用许多编译器来针对我的代码进行测试,包括gcc,clang(LLVM)和icc。我认为开发环境中有其他内容:grep,调试器和valgrind的使用。一种用于更复杂构建的脚本语言。使用Git进行版本控制。

在我看来,比起用来编辑代码的方式,更重要的是代码的结构方式。如何进行布局可能是Stack Overflow的一个问题,但是,正如您所问的那样,我经常有一个单独的目录来存放目标代码,而不是分发目录,并为生成的二进制文件(y | ies)提供另一个文件夹。我有一个测试文件夹,其中包含更多使用我正在编写的通用代码和valgrind的通用代码的C文件,以及最终的项目文件。


1

您可以尝试Motor IDE。它是基于诅咒的,因此您应该有宾至如归的感觉(tm)。它也有点可悲,因为它已经五年没有维护了,所以可能会损坏某些东西。虽然仍然-我认为值得一试。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.