C/C++开发环境

1. 安装C/C++编译环境

(1)安装编译器
编译器:GCC(GNU Compiler Collection),Linux系统一般都自带gcc和g++,而Windows系统则需要自行安装编译器MinGW。

平台编译器下载地址
WindowsMinGW-w64官网:https://nuwen.net/mingw.html
sourceforge:https://sourceforge.net/projects/mingw-w64/files/
Linux自带sudo apt install gcc g++ gdb

官网下载:
在这里插入图片描述
sourceforge下载:
在这里插入图片描述

(2)配置环境变量
安装编译器后,将 gcc 和 g++ 添加到系统环境变量中,gcc和g++一般都在同意文件中。
在桌面,右键点击“此电脑”→ “属性”→ “高级系统设置”→“境变量”,在系统变量中找到Path→“编辑”,新增环境变量:x:\xxx...\MinGW\bin
(3)验证安装
window+R打开命令行,输入:

g++  --version   // 验证C++编译器是否安装正确
gcc  --version   // 验证C编译器是否安装正确
gdb  --version   // 验证C/C++程序调试工具

如下所示,即就是安装成功。
在这里插入图片描述
(4)编译和运行

# 编译c源文件
$ gcc xxx.c -o 可执行程序名    //将xxx.c编译生成一个可执行文件.exe
# 编译c++源文件
$ g++ xxx.cpp -o 可执行程序名  //将xxx.cpp编译生成一个可执行文件exe

运行结果:
在这里插入图片描述

2. 安装集成开发环境

VSCode官方网站:https://code.visualstudio.com/Download

3. VSCode配置开发和调试环境

3.1 vscode安装插件

‌在VSCode中搜索并安装“C/C++”和“Code Runner”插件。‌这些插件将提供C/C++代码的编辑、‌编译和运行功能。‌

  • C/C++(必需)
    该插件是由微软官方发布的一款扩展(C/C++ Extension),旨在为开发者提供高效的C和C++代码编辑、调试和构建功能。它是用VS Code进行C/C++开发的核心工具。
  • Code Runner(可选)
    该插件可以让开发者快速运行多种编程语言的代码,而无需配置复杂的任务或调试环境。
  • C/C++ Extension Pack(可选)
    该插件由多个与C/C++开发相关的插件组成,帮助开发者更高效地在VS Code中进行代码编辑、调试、构建和测试工作。
  • CMake Tools(可选,如果使用 CMake)
    该插件专门为使用CMake构建系统的开发者设计。它提供了丰富的功能,可以帮助开发者更高效地配置、生成、构建和调试基于CMake的项目。

3.2 配置 C/C++ 开发环境

首先,需要新建一个C源码文件夹,并在其中创建 main.c 文件。

#include <stdio.h>

int main() {
    printf("Hello, C World!\n");
    return 0;
}

然后,要在VSCode中编译\运行\调试C/C++程序,涉及三个配置文件:c_cpp_properties.json,launch.json 和tasks.json。

  • c_cpp_properties.json 文件用于配置 IntelliSense 功能
  • launch.json 文件用于配置调试器
  • tasks.json 文件用于配置任务

3.2.1 配置IntelliSense

方式一:可视化配置
(1)按 Ctrl+Shift+P,输入 C/C++: Edit Configurations (UI)。

(2)配置好以后,就可以看到自动生成文件c_cpp_properties.json,C环境配置完成。在这里插入图片描述

方式二:文件配置
在项目根目录下,新建.vscode文件夹,然后新建c_cpp_properties.json文件。
c_cpp_properties.json文件用于配置C/C++扩展的编译环境信息,帮助VS Code更好地提供代码提示、语法检查、错误报告等功能。它主要指定头文件路径、编译器配置和其他信息。所配置的文件内容如下:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.22621.0",
            "compilerPath": "D:\\Win10_Programs\\develop\\MinGW\\bin\\gcc.exe",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

说明:name:Window对应Win32
windowsSdkVersion:Win+R组合键打开运行对话框,输入cmd回车,在终端中输入VER可查询。
compilerPath:需要配置成gcc/g++的安装路径。

3.2.2 配置调试器

方式一:可视化配置
(1)点击左侧 “Run and Debug” → “Create a launch.json file” → “C++ (GDB/LLDB)/(Windows)”,可生成调试配置文件launch.json
在这里插入图片描述
(2)点击 “Add Configuration” 按钮,根据实际情况选择调试的类型。
在这里插入图片描述
方式二:文件配置
在项目根目录/.vscode文件夹中,新建launch.json文件。
launch.json文件用于配置调试环境,它定义了如何启动、运行和调试C/C++程序。通过这个文件可以指定调试器、程序路径、启动参数以及调试相关的设置,从而完成对程序的调试任务。所配置的文件内容如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\Win10_Programs\\develop\\MinGW\\bin\\gdb.exe",
            "preLaunchTask": "g++",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

说明:miDebuggerPath需要配置成gdb的安装路径。

3.2.3 配置任务器

方式一:可视化配置
(1)选中main.c文件,然后“Terminal” → “Configure Tasks…”。
在这里插入图片描述
(2)选择 “C/C++: gcc.exe build active file”,即可自动生成配置文件tasks.json。
在这里插入图片描述
方式二:文件配置
在项目根目录/.vscode文件夹中,新建tasks.json文件。
tasks.json文件用于配置任务自动化。在配置C/C++开发环境时,该文件主要定义编译任务,帮助开发者完成程序的编译、构建、清理等操作。所配置的文件内容如下:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: gcc.exe build active file",
			"command": "D:\\Win10_Programs\\develop\\MinGW\\bin\\gcc.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build",
			"detail": "compiler: D:\\Win10_Programs\\develop\\MinGW\\bin\\gcc.exe"
		}
	]
}

3.3 编译和调试

编写一个简单的C/C++程序,‌通过VSCode的运行和调试功能进行测试,‌确保编译器配置正确且能够成功编译和运行代码。

#include<stdio.h>

int sum(int n){
    int result;
    if(n == 1) {
        result = 1;
    } else {
        result = n + sum(n - 1);
    }
    return result;
}

void main() {
    printf("1-%d的总和是: %d", 5, sum(5));
}	

在这里插入图片描述

3.3.1 编译打包

如果只有一个c/c++文件,或者其他文件是#include引入,点击 “Terminal” → “Run Build Task…” 执行构建任务,可以生成.exe文件。
在这里插入图片描述
如果存在多个c/c++文件,且文件之间只有extern调用(没有#include进去),还要生成一个.exe文件,如下:
main.c文件:

#include<stdio.h>
// #include "fun.c"  // 注意:这里没有预处理fun.c

extern sum(int n);
void main() {
    printf("1-%d的总和是: %d", 5, sum(5));
}

fun.c文件

int sum(int n){
    int result;
    if(n == 1) {
        result = 1;
    } else {
        result = n + sum(n - 1);
    }
    return result;
}

修改tasks.json文件,如下:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: gcc.exe build active file",
			"command": "D:\\Win10_Programs\\develop\\MinGW\\bin\\gcc.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				//"${file}",
				"${workspaceFolder}\\*.c",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build",
			"detail": "compiler: D:\\Win10_Programs\\develop\\MinGW\\bin\\gcc.exe"
		}
	]
}

说明:这里修改点只有一处,修改tasks.json如下:

"${file}"修改为"${workspaceFolder}\\*.c",可以构建当前工作区所有C文件
"${file}"修改为"${workspaceFolder}\\*.cpp",可以构建当前工作区所有C++文件

编译运行结果如下:
在这里插入图片描述

3.3.2 编译调试

直接按F5即可

3.4 vscode常见问题

3.4.1 运行时报错:…undefined reference to `std::cout’

在这里插入图片描述
解决办法:出现这种错误的原因是实现成员函数的c/cpp文件未被编译。原因是C/C++的运行方法选错导致,参考编译和调试。

3.4.2 编译cJSON时报错:出现未定义引用"xxx" undefined reference to ‘cJSON_CreateObject’'…

在这里插入图片描述
如同, 缺少了对cJSON的编译,这里对成员函数的所需的c/cpp文件未被编译。也就是按单文件编译方法对多文件进行编译。
解决办法:
在tasks.jason 中设置源文件,将"args"的值

语言“args”: […,“${file}”,…]
C“${fileDirname}\\*.c”
C++“${fileDirname}\\*.cpp”
C/C++“${fileDirname}\\*.c”,“${fileDirname}\\*.cpp”

这里的 ${fileDirname} 表示当前目录。

3.4.3 g++ : 无法将“g++”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

在这里插入图片描述
1、g++的安装路径或者文件名里面不要存在中文。
2、g++.exe和gcc.exe设置为“以管理员身份运行此程序”。
在这里插入图片描述
3、放行或者关闭杀毒软件
在这里插入图片描述
4、退出VScode后重新打开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值