新手关于学习C的困惑(Vim和Gcc使用的疑问),望各位大牛能帮助小弟解决 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
se7en_matrix
V2EX    问与答

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

  •  
  •   se7en_matrix 2011-04-30 21:40:59 +08:00 8195 次点击
    这是一个创建于 5338 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在看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     Solana     5519 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 02:43 PVG 10:43 LAX 18:43 JFK 21:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86