1. 安装C/C++编译环境
(1)安装编译器
编译器:GCC(GNU Compiler Collection),Linux系统一般都自带gcc和g++,而Windows系统则需要自行安装编译器MinGW。
平台 | 编译器 | 下载地址 |
---|---|---|
Windows | MinGW-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后重新打开。