V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wsds
V2EX  ›  程序员

初学 C,被编译搞懵逼了

  •  
  •   wsds · 2018-07-31 13:35:51 +08:00 · 7201 次点击
    这是一个创建于 2305 天前的主题,其中的信息可能已经有所发展或是发生改变。
    windows 上,下载的 mingw 中的 g++编译的,看别人都是 makefile 编译的,搞不懂
    请教一下大家,初学的话,怎么编译自己写的代码?
    第 1 条附言  ·  2018-07-31 17:37:14 +08:00
    多谢各位推荐
    56 条回复    2018-08-01 13:40:01 +08:00
    loqixh
        1
    loqixh  
       2018-07-31 13:38:46 +08:00
    windows 用什么 mingw
    vs2017 不更好?
    youngxu
        2
    youngxu  
       2018-07-31 13:39:27 +08:00 via Android
    dev-c++你值得拥有
    wsds
        3
    wsds  
    OP
       2018-07-31 13:47:29 +08:00
    @loqixh 装了 vs2013,编译是可以编译,但不喜欢的是,vs 运行自己写的代码不在内置控制台输出,而是在 cmd 窗口,不太喜欢这个交互方式,而且觉得初学太这个工具太庞大了
    wizardoz
        4
    wizardoz  
       2018-07-31 13:49:59 +08:00
    那就先学一下 makefile 嘛
    如果不学的话:
    g++ hello-world.cpp -o hello-world
    也可以啊
    misaka19000
        5
    misaka19000  
       2018-07-31 13:50:17 +08:00
    makefile 还是需要调用 gcc 的,学编程要学会善用搜索
    crack105
        6
    crack105  
       2018-07-31 13:50:32 +08:00 via Android
    用 devc++吧,容易用,对新手友好
    zynlp
        7
    zynlp  
       2018-07-31 13:54:56 +08:00 via iPhone   ❤️ 1
    直接回答楼主问题,我是怎么编译的:
    1、windows 下 vscode 写代码;
    2、windows 写 Makefile ;
    3、同步到服务器上 make ;
    4、gdb 调试
    5、如果有 bug,重复 1 到 4 ;
    搞定
    easylee
        8
    easylee  
       2018-07-31 14:00:25 +08:00 via Android
    新手学 C,硬要上 IDE,主推 CODE::BLOCKS。
    VVVVVEX
        9
    VVVVVEX  
       2018-07-31 14:05:03 +08:00   ❤️ 1
    那就不要学了,去学 js 吧
    innoink
        10
    innoink  
       2018-07-31 14:08:43 +08:00 via Android
    首先找个靠谱的书
    waruqi
        11
    waruqi  
       2018-07-31 14:09:57 +08:00
    可以用 xmake,进入你的代码目录,直接运行:xmake run 就好了,会自动检测你的源码就够,给你生成一个类似 makefile 的 xmake.lua 文件,然后自动编译和运行。

    配合 vscode/intellij-idea/sublime 效果更佳,都有相关 xmake 插件提供。

    https://github.com/tboox/xmake
    hyyou2010
        12
    hyyou2010  
       2018-07-31 14:17:34 +08:00   ❤️ 1
    如果初学,必然不会有很多的 C 文件,那么就如同前面某位同学说的,直接编译就行了:
    g++ hello-world.cpp -o hello-world

    等你学到一定程度的时候再学 makefile,会写最简单的 makefile 即可,里面有最简单的依赖关系的
    现在没必要花时间在 makefile 上
    hyyou2010
        13
    hyyou2010  
       2018-07-31 14:18:25 +08:00
    另外,推荐安装 VirtualBox 虚拟机,在其中安装 linux,然后在 linux 环境里面学习 C 语言
    metorm
        14
    metorm  
       2018-07-31 14:21:06 +08:00 via Android
    要么就先拿 vs 用着,要么就研究 cmake/make 清晰概念。dev-c++强烈不建议。
    MeteorCat
        15
    MeteorCat  
       2018-07-31 14:22:25 +08:00 via Android
    网络相关编程,最好告别 mingw,用纯正 linux
    JerryCha
        16
    JerryCha  
       2018-07-31 14:25:37 +08:00
    初学用 Code::Block,带 mingw 版本的。初学玩啥命令行编译哟。
    dongxiaozhuo
        17
    dongxiaozhuo  
       2018-07-31 14:29:00 +08:00
    既然是初学 C,就别被周遭的工具所干扰了视线。Windows 上 devcpp 或者 visual studio 社区版就行。用 IDE 的好处就是 debug、编译一步走。熟悉了用 C 写代码,搞懂了数据结构,周遭的工具使用,阅读一下文档就知道如何用。

    初学者别被周围工具的问题,吸引走注意力。
    jowuIM
        18
    jowuIM  
       2018-07-31 14:48:23 +08:00
    建议认真考虑#16 #17,主要是因为因为 windows 下 C 编程真的挺吃力的,特别是初学者。编程环境的事情有时候真的很复杂,利用 IDE 屏蔽环境的问题,学习语法,数据结构和一个算法什么的更重要。
    tao1991123
        19
    tao1991123  
       2018-07-31 14:52:15 +08:00
    新手学 C 用 code::blocks 吧 先学 C
    shijingshijing
        20
    shijingshijing  
       2018-07-31 15:10:15 +08:00 via iPhone
    新手还是虚拟机+linux 吧,微软自己给 c/c++造了不少轮子,mfc 什么的。最奇葩的是.Net 托管的 c++,语法直接惨不忍睹。
    zhangqx
        21
    zhangqx  
       2018-07-31 15:20:12 +08:00
    vscode 不是更好?
    Tyanboot
        22
    Tyanboot  
       2018-07-31 15:41:02 +08:00
    要么 VS, 要么 CLION

    后者满足你说的在内置控制台输出.

    另外 cmd 就是 Windows 的控制台, vs 创建的时候的类型选择控制台程序就是在 cmd 输出的.

    另外 2018 年了为什么要装 vs2013? vs2017 社区版了解下? 只要 c++只需要不到 5G.

    另外用 devcpp/code::blocks 还不如用 clion.
    jmc891205
        23
    jmc891205  
       2018-07-31 15:45:45 +08:00
    初学用不着 makefile
    Howlaind
        24
    Howlaind  
       2018-07-31 16:07:59 +08:00
    markfile 是在后来文件太多、依赖关系复杂、编译参数太长,不愿意弄(弄起来也容易出错)的时候用的。初学还没必要用,就编译一个文件,上 markfile 反而麻烦。
    当你觉得直接敲 g++命令敲得手酸的时候,再来看看 makefile 吧。
    wlgq2
        25
    wlgq2  
       2018-07-31 16:35:41 +08:00
    codeblocks IDE 自带 mingw 安装包 100M,还能根据工程生成 makefile。
    zhangpeter
        26
    zhangpeter  
       2018-07-31 16:42:29 +08:00
    dev-c++
    +1
    zitengdu
        27
    zitengdu  
       2018-07-31 16:52:20 +08:00
    Ubuntu + CMake + Sublime + Shell
    学生帐号再加一个 CLion
    seancheer
        28
    seancheer  
       2018-07-31 17:52:32 +08:00
    makefile 完了还有 cmake,又是一个自动生成 makefile 的工具,你要把你大把的时间花费在工具上么?

    学 c 为什么不关注 c 本身,却在这些工具上纠结?
    tt67wq
        29
    tt67wq  
       2018-07-31 17:58:55 +08:00
    makefile 有好些自动生成的工具的,不用自己写的
    mrcn
        30
    mrcn  
       2018-07-31 18:32:53 +08:00 via Android
    devc++。嫌弃太古老了也可以用 vscode 加上右键运行的那个插件。
    chinawrj
        31
    chinawrj  
       2018-07-31 18:36:28 +08:00
    建议 gcc 编译,ide 会让你搞不懂 C
    suikator
        32
    suikator  
       2018-07-31 18:37:52 +08:00
    28 楼说的对 把重点放到 C 和 Linux 上面 windows 全是坑
    liangzi
        33
    liangzi  
       2018-07-31 19:09:36 +08:00 via Android
    想起了当初我学 C 在 Linux 系统上 然而网上教学几乎都是 Windows 系统 碰到一些头文件还没有 好歹有个 Google 解决问题就靠搜...
    ai277014717
        34
    ai277014717  
       2018-07-31 19:11:51 +08:00
    vs 省心啊。makefile 用到再说吧。
    1423
        35
    1423  
       2018-07-31 19:23:12 +08:00
    找一本靠谱的书,选择一个工具,慢慢学
    别把时间浪费在摆弄各种工具上
    psychoo
        36
    psychoo  
       2018-07-31 19:27:25 +08:00
    好像 code::blocks 是最严格的吧……适合初学
    loqixh
        37
    loqixh  
       2018-07-31 19:30:56 +08:00
    @wsds 如果你要用 linux api 把 wsl 打开或者开虚拟机 vs 配置成 ssh 即可 远程编译 远程调试
    只要学 c api 用不着 linux 别被上面的骗了 初学者我相信用不着 linux api
    Loren
        38
    Loren  
       2018-07-31 19:32:30 +08:00 via Android
    vscode+wsl,你要的都满足
    loqixh
        39
    loqixh  
       2018-07-31 19:35:29 +08:00
    @zynlp vs 配置下 可以自动远程连接 linux 编译运行调试, 更方便
    tushankaka
        40
    tushankaka  
       2018-07-31 19:39:23 +08:00 via Android
    linux,gcc,vim 就可以了
    SonicY
        41
    SonicY  
       2018-07-31 19:45:33 +08:00 via Android
    别在 Makefile 上下太多功夫,写到吐,以后可以用 CMake 之类的工具。
    kevinhwang
        42
    kevinhwang  
       2018-07-31 19:46:43 +08:00 via Android
    别深入学 c,浪费时间,了解基本语法和指针写刷算法即可。
    c 对计算机底层也没什么大的帮助,反而会陷入底层的深渊,还是从高层应用向下学更好。
    尽快学 java,生态非常好,多点看开源项目源码。
    mmdsun
        43
    mmdsun  
       2018-07-31 19:55:52 +08:00 via Android
    推荐 visual studio 2017 宇宙最强 IDE
    shijingshijing
        44
    shijingshijing  
       2018-07-31 19:58:52 +08:00
    @kevinhwang 不同意,底层还是要看的,计算机架构方面 X86 和 ARM 可以作为 CISC 和 RISC 的典型仔细看看,其他类型的 CPU 就算了;操作系统方面重点看一下 Linux 就行了,Windows 不用看。如果想把这两样都玩熟,都需要 C 的基础,否则再往上和高级语言之间就缺了一层,衔接不起来。
    young6
        45
    young6  
       2018-07-31 20:07:05 +08:00 via Android
    makefile 是为了自动编译大型项目。你现在只是写些小 demo 直接 gcc 即可。另外,windows 下个人认为不适合写 c,写 c++比较合适。写 c 还是 linux 方便。
    hatsuyuki
        46
    hatsuyuki  
       2018-07-31 20:29:04 +08:00
    要在 Windows 上用 Makefile
    1.安装 MinGW-W64 ( https://www.cnblogs.com/findumars/p/8289454.html)
    2.在 MinGW-W64 下的 bin 目录找到 mingw32-make.exe ,复制一份,改名为 make
    3.根据这份 跟我一起写 Makefile (PDF 重制版) ( https://pan.baidu.com/s/1zWmehuHvcCeyDIzota4Jcg) 写 makefile
    HarveyDent
        47
    HarveyDent  
       2018-07-31 20:31:16 +08:00
    初学:用 IDE 或者用 Linux。你为何偏偏要选最蛋疼的 mingw。。。新手千万不要去搞什么 makefile。。。这些工具分分钟让你从入门到放弃。
    hatsuyuki
        48
    hatsuyuki  
       2018-07-31 20:34:27 +08:00
    还有推荐在 Windows 平台使用 Cmder 替代系统 cmd
    bumz
        49
    bumz  
       2018-07-31 21:21:13 +08:00
    其实吧
    装个虚拟机,虚拟机里装个 Ubuntu,就行了
    20015jjw
        50
    20015jjw  
       2018-08-01 03:38:09 +08:00 via Android
    新手别用 Windows 别用 ide
    老老实实开个 Linux/mac 开个 shell 弄个 sublime/atom/vs code 就行
    orc
        51
    orc  
       2018-08-01 09:00:18 +08:00 via iPhone
    vc➕➕6.0
    guolaopi
        52
    guolaopi  
       2018-08-01 09:28:12 +08:00
    @orc +1..VC 够你用了。。。再说 CMD 招你了。。。
    jagger2048
        53
    jagger2048  
       2018-08-01 09:55:56 +08:00
    个人看来,新手学 C 最好直接上 IDE ( VS studio,dev c++,codeblock 等),然后专注于 数据结构与算法 这些的入门 [如果不是用来搞单片机的话] ,打好编程功底,不要一开始就折腾环境带偏了,要想清楚你是干啥的。在学有小成开始看开源项目或者自己折腾其他小东西的时候再用到啥学啥, 直接开 linux 虚拟机 上 shell 真是劝退
    NCE
        54
    NCE  
       2018-08-01 10:00:40 +08:00
    真羡慕现在的小孩子。。。还有时间学 C。。。

    我上次这么学是 15 年前了,后来发现,这玩意看看语法还行,真要做出东西来怕是胡子都白了。。。

    然后转学 C#,一直到现在。
    macha
        55
    macha  
       2018-08-01 11:26:24 +08:00
    直接上 IDE,新手别去折腾工具链,要不然折腾半天一句代码没写已经把自己绕晕了。windows 强推 VS2017 社区版。
    allgy
        56
    allgy  
       2018-08-01 13:40:01 +08:00
    c: gcc test.c -o test
    c++: g++ test.c -o test
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1766 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:39 · PVG 00:39 · LAX 08:39 · JFK 11:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.