DataLearner logo

初学者搭建C语言开发环境

2,957 views

C语言的编程与Java和Python有所差别。C语言的开发环境的搭建与其它也有所不同。本文主要是针对初学者提供一个C语言开发环境的搭建指南。

一、搭建环境前的一些概念理解

在正式搭建C语言的开发环境之前我们需要先理解几个概念:

  1. 首先C语言是一种高级编程语言,并不能直接被计算机执行。因此,执行C语言编写的程序文件需要将C语言编译成二进制的文件才能被执行。因此,C语言的开发环境需要有编译器的存在以支持源代码的编译。常见的C语言的编译器包括vc++、gcc等。它们的作用都是将高级的C语言源代码根据CPU和操作系统的类型编译成可以被当前CPU和操作系统能认识的二进制文件,进而被执行。

  2. 既然C语言的开发环境需要编译器的存在,那么第一步我们就是在电脑里面安装编译器。Windows系统的话可以选择VC++(Microsoft Visual C++),它可以单独安装,也被包含在Visual Studio开发工具中。Windows系统也可以使用gcc作为编译器,但是需要使用Cygwin、MinGW等软件提供gcc的编译能力。

  3. 不同操作系统下对C语言程序的编译是不同的。因此,与Java提供虚拟机方式以支持一套语言跨平台运行的情况不同。同样的C语言源代码,在不同环境下需要编译成不同的文件。因为C语言的编译需要利用操作系统提供的一些能力,而C语言的运行没有Java虚拟机这个东西,因此,需要根据不同的操作系统编写对应的内容(大多数情况大部分C语言代码都可以被正常编译,除了少部分需要根据操作系统和CPU来选择实现方法)。如果在Windows下开发C语言程序,建议选择VC++编译器。Cygwin提供的gcc编译虽然也可以保证你的程序在Windows下编译成功后运行,但是它也不能保证你的编译结果可以在Linux上运行,依然要去Linux环境下编译。既然如此,在Windows下选择Cygwin之类的编译工具也就没意义了。

  4. 除了编译器以外,大部分时候我们也会选择一个IDE来开发C语言。一般可以选择的包括Visual Studio、Clion、Eclipse或者是Visual Studio Code。Visual studio是微软提供的IDE,非常庞大,个人也有免费版本。Eclipse是免费的开源的,也比较臃肿。Clion是JetBrains全家桶的成员,虽然好用,但是收费。Visual Studio Code也是微软提供的一个开源的轻量级的编程工具,这几年非常受欢迎。在这里建议大家选择正版免费的,可以考虑VS Code。

  5. C语言是一种低级别的程序编程语言,C++与C语言类似,可以理解是为C语言提供了额外的面向对象的能力的语言。值得注意的是,由于C++是C的超集,你可以在C++编译器上运行大多数C代码。然而,C++通常不能在普通的C编译器上运行。这意味着,如果你想的话,你可以在C++编译器上用C编码。从语法上讲,C++是C的一切,再加上(plus)更多。因此,大多数情况下,C语言的开发环境都是C/C++一体化的。在本文中搭建的环境对于开发C++来说也是OK的。

二、编译器的安装

本文主要描述在Windows环境下搭建C语言的开发环境,因此这里的编译器也是Windows环境下的。如前所述,Windows环境下可以使用Visual Studio带的VC++编译器,也可以使用Cygwin或者MinGW提供的gcc编译能力。这里我们选择Visual Studio。

首先,在这里下载VS:https://visualstudio.microsoft.com/zh-hans/vs/

VS社区版本(community)是一个免费的IDE,作为个人开发者使用这个就够了。当然,这也是很庞大的。

这里下载的是visual studio installer,也就是安装器,安装完毕打开后会看到如下界面:

这里应该可以看到 Visul Studio Community 2019(我安装了就看不到了),然后点击安装可以看到如下界面:

由于这里我们需要的是C语言的编译环境,因此选择“使用C++的桌面开发”即可。此外,右边的可选使用默认即可。

注意,这里左下角有个位置,表明VS的安装位置,可以选择你常用的路径。

选择安装完毕之后,测试一下安装是否成功即可。测试方式:打开如下的Developer Command Prompt for VS 2019,然后在弹出的界面输入cl命令,可以看到如下输出即可:

**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.11.3
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************

D:\Program Files\Microsoft Visual Studio\2019\Community>cl
用于 x86 的 Microsoft (R) C/C++ 优化编译器 19.29.30133 版
版权所有(C) Microsoft Corporation。保留所有权利。

用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]

三、安装VS Code

这里我们选择VS Code作为C语言的开发工具,下载地址如下:

https://code.visualstudio.com/

选择stable版本即可,下载之后安装完毕,然后添加C/C++的开发支持插件。

经过上述步骤我们就完全准备好了C语言的开发环境了。

四、开始创建第一个C语言开发项目示例

创建一个C语言的项目需要经过如下步骤:

首先,通过上述Developer Command Prompt for VS 2019程序进入你希望创建项目的位置,按照如下命令创建项目文件:

cd f:/onedrive/programs/c
mkdir c_examples
cd c_examples
code.

上述命令的含义就是在f:/onedrive/programs/c位置下创建c_examples的文件夹,并使用vs code打开到这个目录。然后你就会看到如下界面:

打开VS Code之后,我们可以在目录栏看到这个c_examples的项目,接下来我们需要配置这个项目的编译和运行环境,让程序运行起来。

第一步是在目录下创建main.c文件,并输入如下的示例代码。这是我们第一个C语言的程序文件,同时也是告诉VS Code,我们接下来需要开发C语言的程序。

#include <stdio.h>

int main(void)
{
    printf("Hello World");
    return 0;
}

依次点击VS Code菜单栏的Terminal-Configure Tasks,然后在弹出来的配置界面选择使用C/C++:cl.exe 生成活动文件,VS Code会自动在项目目录下创建.vscode目录,并生成一个tasks.json的文件。这一步就是配置使用VS来编译C语言程序。这里的cl.exe就是前面安装的VS 2019的编译C语言程序的程序。

生成完这个配置之后就可以编译C语言代码了。

我们可以依次点击Terminal-Run Task...,然后在弹出来的界面选择C/C++:cl.exe 生成活动文件之后VS Code就会使用cl.exe程序来编译刚才的main.c文件,结果就是产生了如下的一些新文件,包括main.obj、main.exe等。这里的main.exe就是可以被当前系统与CPU执行的程序。同时,我们也可以在VS Code下面的输出栏看到编译的过程和编译成功的提示。

结果如下图所示:

接下来我们可以配置运行整个项目。依次点击VS Code的Run-Add Configure...,在弹出的界面选择“C++(Windows)”(不要选择第一个GDB/LLDB),然后VS Code就会生成一个launch.json文件,用以配置如何运行这个项目。

上述步骤完成之后,就会显示launch.json的内容。内容如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "cl.exe - 生成和调试活动文件",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "console": "externalTerminal",
            "preLaunchTask": "C/C++: cl.exe 生成活动文件"
        }
    ]
}

注意,这里的program配置表示运行哪个命令作为项目的运行入口,这里我们需要改成上述的main.exe即可。如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "main.exe",   // 注意这里变掉了哦!
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/path/to/gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

并且会弹出一个弹出框,有刚才我们的“Hello World”结果。这样就运行完成了。

五、其它注意问题

5.1、检测到 #include 错误。请更新 includePath。已为此翻译单元(F:\OneDrive\Programs\C\df_c_learning\main.c)禁用波形曲线。

如果在main.c的内容中输入的代码第一行出现如下提示的错误:

检测到 #include 错误。请更新 includePath。已为此翻译单元(F:\OneDrive\Programs\C\df_c_learning\main.c)禁用波形曲线。C/C++(1696)
无法打开 源 文件 "stdio.h"C/C++(1696)

这是因为编译环境的问题,我出现了这个问题是因为在安装Visual Studio Community 2019的时候选择桌面C++环境的时候可选部分裁剪掉了一部分内容,没想到这里面很多内容不能不安装,因此安装的时候选择默认的可选组件就行了。不要自作聪明剪裁。

5.2、There is no task provider registered for tasks of type "cppbuild"

如果你在编译程序的时候(Terminal-Run Task...)出现如下错误:

There is no task provider registered for tasks of type "cppbuild"

那么,这是因为使用VS编译C语言的程序没有和VS Code关联所致,需要打开Visual Studio Community 2019进入项目目录,然后使用code.命令启动即可。

3、launch.js区别 tasks.json的区别

tasks.json在VS Code中是用来配置编译或者运行某一个文件的配置。launch.json是运行整个项目的配置。

DataLearner WeChat

Follow DataLearner WeChat for the latest AI updates

DataLearner 官方微信二维码