V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
se7en_matrix
V2EX  ›  问与答

新手关于学习C的困惑(Vim和Gcc使用的疑问),望各位大牛能帮助小弟解决

  •  
  •   se7en_matrix · 2011-04-30 21:40:59 +08:00 · 7687 次点击
    这是一个创建于 4987 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在看C Program Language(谭浩强的那本已经学过了,国二考试也过了,其实那考试根本脱离了编程本身),一直很困扰用什么工具去解决编译测试自己程序,然后在网上看过别人一致推荐Vim,GCC和GDB解决方案,但是我在简单地学习过之后,感觉对于像我这样一个新手很难上手这三样软件。
    我想问的是:

    1.有什么可以快速上手Vim的书(最好有下载地址),我知道熟练掌握VIM需要不断的实践,但是我目前的要求就是可以方便测试我的C程序,而不是浪费更多时间在有些细节上面,Vim Tutor看了,但是没剩下多少东西,而且更重要的是我还是不知道怎么快速测试我的程序。
    2.GCC的问题,难道每次测试都必须在VIM打完之后,用GCC来编译?用得着记忆那么多GCC命令?
    3.我用得Ubuntu上问题多多,比如显卡的开源驱动和NV的驱动的冲突(导致我每次都得Ctrl+Alt+F2去挑亮度),比如装软件老是出现Grub-Pc错误的提示,怎么解决?
    4.其实我更想在WIN7下编程C,不知道有什么推荐?用IDE(比如VISUAL C++ 2008 EXPRESS? )还是GVIM和什么编译器?

    小弟不胜感激各位的帮助
    31 条回复    1970-01-01 08:00:00 +08:00
    yelusiku
        1
    yelusiku  
       2011-04-30 21:55:38 +08:00 via iPhone
    vim tutor光看是记不住什么东西的,关键是边看边练,实践中记忆。一般的c程序只需要使用很少几个gcc命令,用makefile组织一下,在vim里可以直接:make。gdb也是只需要先记住简单的命令,如断点、单步等,使用中提高。至于ubuntu,建议安装在windows上的虚拟机里,别去折腾什么显卡驱动,太废精力。另,devc++和codeblock都不错。
    se7en_matrix
        2
    se7en_matrix  
    OP
       2011-04-30 22:02:21 +08:00
    @yelusiku 谢谢你的建议。
    1.我最近借了一本C核心程序设计,里面有详细的GCC和GDB的介绍,就是不知道该注重什么东西。
    2.我去年就装了UBUNTU 10.04,感觉装软件包很方便,就是实际使用起来兼容性问题太多,很烦心。
    iwinux
        3
    iwinux  
       2011-04-30 22:17:02 +08:00
    我的建议是在Windows系统里安装一个 Cygwin。这样你就可以在自己熟悉的操作系统里,用GCC/GDB.

    至于编辑器,如果一开始不适应的话,可以找个比较容易上手的,比如Notepad++
    chloerei
        4
    chloerei  
       2011-04-30 22:17:22 +08:00
    1. 没有捷径。
    2. make(Makefile)

    其他不懂

    快速测试是一个话题,现在的我没有自动测试是不会写代码对。
    se7en_matrix
        5
    se7en_matrix  
    OP
       2011-04-30 22:21:28 +08:00
    @iwinux 谢了,我试试看,至少我认为从某种角度上来说,Liunx比Windos更能了解计算机本质
    zztczcx
        6
    zztczcx  
       2011-04-30 22:22:21 +08:00
    记得vim之父说过如何高效使用的一句话就是,在自己写代码的时候,发现哪里可以改进、提升速度,或是感觉有什么不爽的,去google一下,基本上都可以找到解决方法。这就是vim的强大吧。常用的命令,还是要熟练。
    se7en_matrix
        7
    se7en_matrix  
    OP
       2011-04-30 22:23:39 +08:00
    @chloerei 谢谢,我想继续问你一下,你的最后一句话是什么意思?
    “现在的我没有自动测试是不会写代码对”?
    obiwong
        8
    obiwong  
       2011-04-30 22:27:19 +08:00
    iwinux
        9
    iwinux  
       2011-04-30 22:28:20 +08:00
    @se7en_matrix Linux在某种程度上的确比Windows更适合写程序。

    但我的看法是,目前你是在学C语言,那就应该集中精力学C语言,不要被其他的事情(比如操作系统,比如编辑器)分心。

    等你C语言学得差不多的时候(比如看完手头这本书),再回来折腾操作系统或编辑器也不迟。
    buxianyu
        10
    buxianyu  
       2011-04-30 22:32:38 +08:00
    我是在Windows Xp中安装了Borland C Compiler 5.5,又安装了Gvim 7.3,设置好path(可以在“系统”-“高级”-“环境变量”里面设)后,在cmd命令行窗口即可以较好地使用vim,和Linux下相差不大,再用bcc32编译c源文件。

    在Ubuntu下,直接打开终端,vi hello.c,即可编辑hello.c或其他的源文件。编辑好,直接gcc hello.c,再执行./a.out 即可运行可执行文件。

    vim的操作可参考 www.v2ex.com/t/11821

    vim tutor还是要先亲手练习一遍。
    liangsdu
        11
    liangsdu  
       2011-04-30 22:33:08 +08:00
    1. 如果楼主用vim的话,推荐c/c++ support这个script,会在菜单里加一个c/c++的菜单项,选择里面的命令就可以(前提是path里面有gcc)
    2. 如果在win7里面编c/c++的话用codeblocks就可以,推荐csdn/loaden编译的版本,自带vc/gcc,方便使用
    lwjef
        12
    lwjef  
       2011-04-30 22:36:09 +08:00
    vim暂且先不学 先耍好C再学吧 vim门槛虽高 但是熟练之后还是很棒的
    chloerei
        13
    chloerei  
       2011-04-30 22:36:38 +08:00
    @se7en_matrix 测试驱动开发。不太用调试器。
    AntiGameZ
        14
    AntiGameZ  
       2011-04-30 22:37:16 +08:00
    笑而不语,这边的哥们都中毒了么?初学者,且不论动手能力,xNix的能力怎样,就给下VIM/GCC的猛剂。

    初学者,自己掂量掂量,如果想一心入门,最好还是抛开那些工具的门槛。用CFree或者微软的Visual C++ Express,挺好。遇到工具上的问题,起码也有靠谱的官方文档参考。

    LZ根据自己情况取舍吧。
    iwinux
        15
    iwinux  
       2011-04-30 22:40:41 +08:00
    @AntiGameZ 赞同。话说我当初居然被忽悠去用 Turbo C (2003年 = =!!!)
    chloerei
        16
    chloerei  
       2011-04-30 22:47:46 +08:00
    门槛高比较好还是门槛低比较好,也许可以确定的是最终还是看人本身。

    山就在那里,怎么爬都有那么高。

    我学C的时候开始是用eclipse,后来才去vim。
    yelusiku
        17
    yelusiku  
       2011-04-30 23:08:43 +08:00
    @chloerei 不太建议初学者用TDD的方法来除错,况且又是C这种级别的语言。调试本来就是程序开发中非常重要的技能,打好基础是关键,自动测试是不可能取代调试的。
    yelusiku
        18
    yelusiku  
       2011-04-30 23:15:56 +08:00
    @AntiGameZ VC++的复杂度也不比gcc低多少,而且很多东西包装之后复杂度根本没有降低多少的情况下反而离C语言的本质更远了。想学好C语言是不可能绕过编译链接这样的过程的。

    从楼主目前的情况来看,最需要的应该是一本靠谱的入门书籍和循序渐进的练习。
    推荐一个不错的教程:http://learn.akae.cn/media/index.html
    AntiGameZ
        19
    AntiGameZ  
       2011-04-30 23:38:19 +08:00
    @yelusiku

    这只能留给他自己去决定。

    拿自己来举个并不是很恰当的例子:一直在VC2005上写C/C++,2,3年前吧,因为项目需要转到xNIX上,自然也用起来GCC。转换很顺畅,虽然面对很多变化,但自己没有觉得遇到阻力。但是新加入的一个新人,除了装过uBuntu Desktop,语言和算法比较熟络之外,没什么项目经验。编译整个项目到部署就花了他2天时间,这还是有人在边上时不时指导。很多问题,我自己都不曾遇到过。后来想了一下,很多时候因为熟悉,就可以自然避免掉很多不必要的弯路,以至于自己压根不知道,“啊,也能出这样的错误啊”。
    ssword
        20
    ssword  
       2011-05-01 00:19:10 +08:00
    vim可以用肌肉学,用上两个月下来,不能上手也能适应了。
    vim+gcc这个路数已经暗示是unix的编程环境了,unix的文化也自然会接触到:使用脚本将重复性的工作自动化。楼主说“每次都要敲gcc的命令”,unix的长处也正是在回避这点上面,写一个Makefile,以后编译或者调试都只需要一个make命令即可,make life easier.
    我通常是在ubuntu的一个虚拟桌面下开一个gvim和terminal,切换起来也很方便。
    chone
        21
    chone  
       2011-05-01 02:15:44 +08:00
    vim有一定的学习曲线,而且一开始还比较陡。
    还是应该用一个熟悉的熟悉的编辑器,这样好把注意力集中在c上。
    至于gcc makefile或者脚本可以解决你的问题
    linux的话可以用先在windows下装个cygwin,原因和vim一样,先减少需要学习的东西,关注最主要的。
    第四点cygwin+gcc就行了
    gfreezy
        22
    gfreezy  
       2011-05-01 08:22:58 +08:00
    坚持就是胜利。用上段时间就啥都解决了。
    fanzeyi
        23
    fanzeyi  
       2011-05-01 08:36:31 +08:00
    说一句.. 在vim里面用:make编译不一定需要有Makefile..

    在配置文件里面加一句

    set makeprg=gcc\ -g\ -lm\ -Wall\ -o\ %<\ %

    这就好了... = =根据自己需求改吧.
    yyfearth
        24
    yyfearth  
       2011-05-01 10:59:55 +08:00
    好强哥的书,TMD误人子弟啊。
    yyfearth
        25
    yyfearth  
       2011-05-01 11:00:34 +08:00
    建议脱离IDE,学习VIM将受益终生的。
    bruce
        26
    bruce  
       2011-05-01 17:19:42 +08:00 via Android
    第一不要看误人子弟的书。
    lwjef
        27
    lwjef  
       2011-05-01 17:23:33 +08:00
    好强的书似乎很多大学都在用吧,不过应该都是基础课程的那种吧。
    Syndim
        28
    Syndim  
       2011-05-01 18:31:43 +08:00
    @AntiGameZ VS卡的要死。。打开一下半分钟,新建工程半分钟,新建文件半分钟,编译文件半分钟。。。有时候切到别的程序,过段时间切回来又要卡半分钟。。。
    Syndim
        29
    Syndim  
       2011-05-01 18:32:28 +08:00
    @AntiGameZ 而且貌似VC报错不如gcc准确啊。
    se7en_matrix
        30
    se7en_matrix  
    OP
       2011-05-01 18:38:42 +08:00
    谢谢各位的建议,我就不一一感谢了。
    我决定在WIN下装个cygwin,然后先搞定那K&R的那本书的内容,在学习的过程中顺带补充VIM+GCC的知识。
    AntiGameZ
        31
    AntiGameZ  
       2011-05-01 19:40:41 +08:00
    @Syndim 程序员应该需要一个好电脑:D。报错的准确性可能和编译器有关,VC和GCC都可以挂N种编译器,可以对比看看。还是之前说的,好习惯胜过好工具。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1645 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:44 · PVG 00:44 · LAX 08:44 · JFK 11:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.