C/C++使用vcpkg管理跨平台包的最佳实践

 更新时间:2026年05月20日 09:02:56   作者:江南皮侠客  
本文介绍了vcpkg,一个微软开源的C/C++包管理器,支持跨平台、源码构建、版本管理、构建系统集成等功能,文中详细阐述了vcpkg的安装、使用方法、版本管理、集成到项目、常见问题与解决方案等内容,并提供了最佳实践建议,需要的朋友可以参考下

1. vcpkg 简介

1.1 什么是 vcpkg?

vcpkg 是微软开源的一款 C/C++ 包管理器,旨在简化第三方库的获取与构建过程。它支持 Linux、Windows 和 macOS 三大平台,能够与 CMake、MSBuild 等主流构建系统无缝集成。

vcpkg 的设计哲学是"源码构建 + 本地缓存"——库的源代码下载后在本机编译,生成的二进制文件缓存在本地,供后续复用。

vcpkg 的主要特性:

特性说明
跨平台同一套工作流覆盖 Linux / Windows / macOS
源码构建支持自定义编译选项(如静态/动态链接、debug/release)
版本管理支持版本锁定、基线(baseline)与覆盖(overlay)
庞大生态内置超过 2500+ 开源库,持续更新
构建系统集成内建 CMake 工具链文件,也支持 MSBuild 直接引用
三重支持x86 / x64 / arm(含 arm64)多架构

1.2 为什么选择 vcpkg?

对比维度手动管理vcpkg
库下载需自行寻找源码包、确认版本一行命令自动下载
编译配置手动配置编译选项、解决依赖链自动处理依赖关系
项目集成手动配置 include/lib 路径工具链文件自动注入
版本锁定依赖系统包管理器版本baseline + versioning 精确控制
团队协作每人需重复部署环境vcpkg.json 声明依赖,一键还原

2. 安装 vcpkg

2.1 前置条件

Windows

依赖项说明验证命令
Git克隆 vcpkg 仓库git --version
Visual Studio2019/2022(含"使用 C++ 的桌面开发"工作负载)cl 或 Visual Studio Installer 确认
Windows SDK随 VS 安装或单独安装
CMake(可选)vcpkg 自身不强制,但项目推荐cmake --version

提示:如果使用 Visual Studio Code,建议安装 CMake Toolsvcpkg 扩展。

Linux (Ubuntu/Debian)

# 安装编译工具链
sudo apt update
sudo apt install -y git curl zip unzip tar pkg-config
# 安装 C/C++ 编译器
sudo apt install -y build-essential
# 安装 CMake
sudo apt install -y cmake
验证命令:
$ git --version
$ g++ --version
$ cmake --version

对于其他 Linux 发行版(Fedora、Arch 等),请使用对应的包管理器安装 gcc / g++cmakemake

2.2 克隆与引导安装

以下步骤在 Linux 和 Windows 上完全一致

# 1. 克隆 vcpkg 仓库(建议放在用户目录下),如果克隆速度慢可以直接从github上面下载压缩包解压
git clone https://github.com/microsoft/vcpkg.git ~/vcpkg
# 2. 执行引导脚本——编译 vcpkg 自身
# Linux/macOS
~/vcpkg/bootstrap-vcpkg.sh
# Windows (PowerShell)
~/vcpkg/bootstrap-vcpkg.ps1
# 或 cmd
%USERPROFILE%\vcpkg\bootstrap-vcpkg.bat

注意:Windows 下需要以管理员权限运行 PowerShell 时,部分操作可能需要;但日常使用无需管理员。

为了在任何终端中直接使用 vcpkg 命令,建议将 vcpkg 目录加入 PATH:

Linux

# 编辑 shell 配置文件(以 bash 为例)
echo 'export PATH="$HOME/vcpkg:$PATH"' >> ~/.bashrc
source ~/.bashrc

Windows

方式一:通过 PowerShell Profile(推荐)

# 1. 查看当前 PowerShell Profile 文件路径
$PROFILE

# 2. 如果文件不存在,创建它
New-Item -Path $PROFILE -Type File -Force

# 3. 用记事本打开编辑
notepad $PROFILE

在打开的 Profile 文件中添加以下内容:

# 添加 vcpkg 到 PATH
$env:Path += ";$env:USERPROFILE\vcpkg"

# 可选:设置 vcpkg 默认三重(以 Windows 静态链接为例)
$env:VCPKG_DEFAULT_TRIPLET = "x64-windows"

保存后,重新加载配置:

. $PROFILE

方式二:通过系统环境变量

通过系统设置 → 环境变量 → 编辑 PATH,添加 vcpkg 目录。

验证安装:

vcpkg version

3. 包管理——搜索、安装与卸载

3.1 搜索可用包

# 按名称搜索
vcpkg search fmt

# 搜索特定关键字(如 json 解析库)
vcpkg search json

3.2 安装包

基础用法

# 安装默认三重(triplet)的包
vcpkg install fmt

指定三重(triplet)

三重用于指定目标平台和架构:

三重(Triplet)说明
x64-windowsWindows x64 动态链接(默认)
x86-windowsWindows x86 动态链接
x64-windows-staticWindows x64 静态链接
x64-windows-static-mdWindows x64 静态链接(/MD 运行时)
x64-linuxLinux x64 动态链接(默认)
x64-linux-staticLinux x64 静态链接
arm64-windowsWindows ARM64 动态链接
arm64-linuxLinux ARM64 动态链接
x64-osxmacOS x64
arm64-osxmacOS Apple Silicon

安装示例:

# Windows 静态链接
vcpkg install fmt:x64-windows-static

# Linux 静态链接
vcpkg install fmt:x64-linux-static

# 安装多个包
vcpkg install fmt spdlog jsoncpp

安装过程详解

安装时 vcpkg 会:

  1. 下载 包的源代码(包含依赖链)
  2. 编译 源码生成二进制文件
  3. 安装 生成的库文件和头文件到 vcpkg 的 packages/ 目录
  4. 注册 到 vcpkg 的数据库中

3.3 列出与卸载已安装包

# 列出所有已安装包
vcpkg list

# 卸载指定包
vcpkg remove fmt

# 卸载并清理依赖(不清理其他包所需的依赖)
vcpkg remove --recurse fmt

3.4 查看包详情

# 查看包的详细信息和可用特征(features)
vcpkg search fmt

# 更详细的包信息
vcpkg depend-info fmt

4. 集成到项目

vcpkg 提供了多种集成方式,最推荐的是 CMake 工具链文件 方式。

4.1 CMake 集成(推荐)

方式一:全局集成(一次性)

# 使 vcpkg 对系统上所有 CMake 项目可见
vcpkg integrate install

这会在 CMake 中自动加入 CMAKE_TOOLCHAIN_FILE 设置。之后 CMake 项目只需在 CMakeLists.txt 中通过 find_package 使用即可:

cmake_minimum_required(VERSION 3.16)
project(MyProject LANGUAGES CXX)

# vcpkg 会自动注入 CMAKE_TOOLCHAIN_FILE
# 因此可以直接 find_package
find_package(fmt REQUIRED)

add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE fmt::fmt)

方式二:项目级集成(推荐,可复现)

在项目中创建 CMakePresets.json 或通过命令行显式指定:

# Linux
cmake -B build -S . \
    -DCMAKE_TOOLCHAIN_FILE=~/vcpkg/scripts/buildsystems/vcpkg.cmake

# Windows (PowerShell)
cmake -B build -S . `
    -DCMAKE_TOOLCHAIN_FILE=$HOME/vcpkg/scripts/buildsystems/vcpkg.cmake

或在 CMakeLists.txt 开头设置:

# 指定 vcpkg 工具链文件(不建议提交到版本控制)
set(CMAKE_TOOLCHAIN_FILE "$ENV{HOME}/vcpkg/scripts/buildsystems/vcpkg.cmake"
    CACHE STRING "vcpkg toolchain file")

方式三:manifest 模式(强烈推荐)

manifest 模式通过项目中的 vcpkg.json 声明依赖,使环境可复现:

{
  "name": "my-project",
  "version": "1.0.0",
  "dependencies": [
    "fmt",
    "spdlog",
    "jsoncpp"
  ]
}

然后通过 vcpkg install 安装依赖:

# 在项目根目录运行(自动读取 vcpkg.json)
vcpkg install

结合 CMake 使用时,CMake 会自动识别项目根目录的 vcpkg.json 并安装依赖:

# CMakeLists.txt - 无需显式 find_package 所有依赖
# 如果启用了 manifest 模式,vcpkg 会自动设置

add_executable(my_app main.cpp)
# 通过 vcpkg 的 cmake 集成自动链接

4.2 MSBuild 集成(Windows / Visual Studio)

# 全局 MSBuild 集成
vcpkg integrate install

这会将 vcpkg 的头文件路径和库路径自动注入到 Visual Studio 项目中。之后在 VS 中直接 #include 并使用即可。

如果要移除全局集成:

vcpkg integrate remove

4.3 跨平台项目示例

以下是一个完整的跨平台 C++ 项目结构:

my_project/
├── CMakeLists.txt
├── vcpkg.json              # 依赖声明(manifest)
├── vcpkg-configuration.json # 版本锁定配置(可选)
├── src/
│   └── main.cpp
└── build/                  # 构建输出目录

vcpkg.json

{
  "name": "my-cross-platform-app",
  "version": "0.1.0",
  "dependencies": [
    "fmt",
    "spdlog",
    "nlohmann-json",
    "cxxopts"
  ]
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(MyCrossPlatformApp LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# find_package 的包必须与 vcpkg.json 中的依赖一一对应
find_package(fmt REQUIRED)
find_package(spdlog REQUIRED)
find_package(nlohmann_json REQUIRED)
find_package(cxxopts REQUIRED)

add_executable(my_app src/main.cpp)

target_link_libraries(my_app PRIVATE
    fmt::fmt
    spdlog::spdlog
    nlohmann_json::nlohmann_json
    cxxopts::cxxopts
)

src/main.cpp

#include <fmt/core.h>
#include <spdlog/spdlog.h>
#include <nlohmann/json.hpp>
#include <cxxopts.hpp>
using json = nlohmann::json;
int main(int argc, char** argv) {
    cxxopts::Options options("my_app", "A cross-platform C++ app");
    options.add_options()
        ("n,name", "Your name", cxxopts::value<std::string>());
    auto result = options.parse(argc, argv);
    std::string name = result["name"].as<std::string>();
    json j = {{"name", name}, {"platform", VCPKG_TARGET_TRIPLET}};
    spdlog::info("Hello, {}! Input: {}", name, j.dump());
    return 0;
}

构建与运行

# Linux
cmake -B build -S . \
    -DCMAKE_TOOLCHAIN_FILE=~/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build
./build/my_app --name World

# Windows (PowerShell)
cmake -B build -S . `
    -DCMAKE_TOOLCHAIN_FILE=$HOME/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build
.\build\Release\my_app.exe --name World

5. 版本管理与锁定

5.1 版本基线(Baseline)

vcpkg 每发布一个新版本都会对应一个 基线,记录了当时所有可用包的版本信息。

# 查看当前使用的基线
vcpkg x-history

5.2 通过 vcpkg-configuration.json 锁定版本

{
  "registries": [
    {
      "kind": "artifact",
      "location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
      "name": "microsoft"
    }
  ],
  "default-registry": {
    "kind": "git",
    "repository": "https://github.com/microsoft/vcpkg",
    "baseline": "abcdef1234567890abcdef1234567890abcdef12"
  }
}

5.3 覆盖特定包版本(Overlay)

# 创建 overlay 目录
mkdir -p my-overlay-ports/fmt

# 将自定义版本的 fmt 放到此处即可覆盖默认

然后在 vcpkg.json 中引用:

{
  "name": "my-project",
  "version": "1.0.0",
  "dependencies": ["fmt"],
  "overlay-ports": [ "./my-overlay-ports" ]
}

6. 自定义编译选项

6.1 特征(Features)

许多包提供了可选功能,通过特征来控制:

# 查看包的可用特征
vcpkg search fmt

# 安装带有特征版本的包
vcpkg install fmt[core,header-only]

# 在 manifest 中使用特征
{
  "name": "my-project",
  "version": "1.0.0",
  "dependencies": [
    {
      "name": "fmt",
      "features": ["header-only"]
    },
    {
      "name": "spdlog",
      "features": ["fmt"]
    }
  ]
}

6.2 自定义三重(Custom Triplets)

~/vcpkg/triplets/ 目录下可以自定义三重文件。例如 x64-linux-static-md.cmake

set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static)

set(VCPKG_CMAKE_SYSTEM_NAME Linux)

之后即可使用:

vcpkg install fmt:x64-linux-static-md

7. vcpkg 目录结构解析

理解 vcpkg 的目录结构有助于排查问题和自定义配置:

~/vcpkg/
├── vcpkg                     # vcpkg 可执行文件
├── bootstrap-vcpkg.sh        # Linux 引导脚本
├── bootstrap-vcpkg.bat       # Windows 引导脚本
├── ports/                    # 包构建脚本仓库
│   ├── fmt/                  # fmt 库的 port 定义
│   │   ├── portfile.cmake    # 构建脚本
│   │   └── vcpkg.json        # 包元数据
│   ├── spdlog/
│   └── ...
├── triplets/                 # 三重定义文件
│   ├── x64-windows.cmake
│   ├── x64-linux.cmake
│   └── ...
├── packages/                 # 已安装的二进制文件
│   ├── fmt_x64-linux/
│   │   ├── include/          # 头文件
│   │   ├── lib/              # 库文件 (.a / .lib)
│   │   └── debug/lib/        # Debug 版本库文件
│   └── ...
├── downloads/                # 下载的源码压缩包缓存
├── buildtrees/               # 编译中间产物
├── installed/                # 符号链接到 packages/ 的内容
└── scripts/                  # 辅助脚本
    └── buildsystems/
        ├── vcpkg.cmake       # CMake 工具链文件(核心)
        └── msbuild/          # MSBuild 集成

8. 常见问题与排查

8.1 安装失败——端口错误

现象vcpkg install 过程中报错,提示构建失败。

排查步骤

# 1. 查看详细的错误日志
# 错误信息会显示 logs 路径,形如:
#   vcpkg/fmt: error: building fmt failed with: ...
#   详细信息在:~/vcpkg/buildtrees/fmt/install-x64-linux-dbg-out.log

# 2. 尝试清理后重新安装
vcpkg remove fmt
vcpkg clean
vcpkg install fmt

# 3. 尝试不同版本
vcpkg install fmt@10.0.0

8.2 找不到 find_package

现象:CMake 配置时报 find_package 找不到包。

常见原因

# 1. 忘记指定工具链文件
# 解决方法:cmake 时添加 -DCMAKE_TOOLCHAIN_FILE=...

# 2. 三重不匹配——安装了 x64-linux 但 CMake 没传对应参数
# 解决方法:确保 CMake 生成时使用了正确的三重

# 3. 包名与 CMake 目标名不一致
# 查看已安装包提供的 CMake targets
~/vcpkg/packages/fmt_x64-linux/share/fmt/fmtConfig.cmake

8.3 网络问题与换源(中国用户)

国内用户访问 GitHub 和 vcpkg 官方源可能较慢,以下提供代理、换源和缓存镜像三种加速方案。

8.3.1 设置代理(临时有效)

# Linux / macOS
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890

# 如果要持久化,加入 shell 配置文件
echo 'export http_proxy=http://127.0.0.1:7890' >> ~/.bashrc
echo 'export https_proxy=http://127.0.0.1:7890' >> ~/.bashrc
# Windows PowerShell(当前会话)
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"

# 持久化:将上述两行添加到 PowerShell Profile
notepad $PROFILE
# 添加后执行 . $PROFILE 生效

8.3.2 使用 Git 镜像克隆 vcpkg

通过国内镜像仓库克隆 vcpkg,加速首次下载:

# Linux
git clone https://github.com.cnpmjs.org/microsoft/vcpkg.git ~/vcpkg
# 或使用 gitee 镜像
git clone https://gitee.com/mirrors/vcpkg.git ~/vcpkg

# Windows (PowerShell)
git clone https://github.com.cnpmjs.org/microsoft/vcpkg.git $env:USERPROFILE\vcpkg
git clone https://gitee.com/mirrors/vcpkg.git $env:USERPROFILE\vcpkg

注意:使用镜像克隆后,后续更新时建议切回官方源,或继续使用镜像仓库进行 git pull

8.3.3 配置 vcpkg 二进制缓存(Asset Cache)

vcpkg 支持配置二进制缓存代理,避免重复从海外下载源码包。推荐使用腾讯云 vcpkg 公众镜像

# Linux
export X_VCPKG_ASSET_SOURCES=x-azurl,https://mirrors.tencent.com/vcpkg/,proxy

# 持久化到 shell 配置
echo 'export X_VCPKG_ASSET_SOURCES=x-azurl,https://mirrors.tencent.com/vcpkg/,proxy' >> ~/.bashrc
# Windows PowerShell
$env:X_VCPKG_ASSET_SOURCES = "x-azurl,https://mirrors.tencent.com/vcpkg/,proxy"

# 持久化到 PowerShell Profile
notepad $PROFILE
# 添加: $env:X_VCPKG_ASSET_SOURCES = "x-azurl,https://mirrors.tencent.com/vcpkg/,proxy"

8.3.4 使用自定义注册表(Registry Mirror)

通过 vcpkg-configuration.json 配置自定义注册表源:

{
  "default-registry": {
    "kind": "git",
    "repository": "https://github.com/microsoft/vcpkg",
    "baseline": "abcdef1234567890abcdef1234567890abcdef12"
  },
  "registries": [
    {
      "kind": "artifact",
      "location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
      "name": "microsoft"
    }
  ]
}

如果要使用国内镜像的 registry,可以将 repository 地址替换为镜像地址。

8.3.5 完整配置示例(PowerShell Profile)

将以下内容写入 $PROFILE,一次性配置代理、缓存镜像和默认三重:

# ===== vcpkg 环境配置 =====

# 1. PATH
$env:Path += ";$env:USERPROFILE\vcpkg"

# 2. 默认三重
$env:VCPKG_DEFAULT_TRIPLET = "x64-windows"

# 3. 资产缓存镜像(腾讯云公众镜像,下载源码加速)
$env:X_VCPKG_ASSET_SOURCES = "x-azurl,https://mirrors.tencent.com/vcpkg/,proxy"

# 4. 代理(按需取消注释)
# $env:HTTP_PROXY = "http://127.0.0.1:7890"
# $env:HTTPS_PROXY = "http://127.0.0.1:7890"

保存后执行 . $PROFILE 生效。

# 验证环境变量是否生效
echo $env:X_VCPKG_ASSET_SOURCES

8.4 vcpkg 更新

# 更新 vcpkg 自身
cd ~/vcpkg
git pull
./bootstrap-vcpkg.sh        # Linux
./bootstrap-vcpkg.bat        # Windows

# 更新所有已安装包到最新
vcpkg upgrade

8.5 磁盘占用过大

# 清理编译中间文件(不删除已安装的二进制)
vcpkg clean

# 清理下载缓存
# 直接删除 downloads/ 目录即可
rm -rf ~/vcpkg/downloads/*

# 查看已安装包占用的磁盘空间
du -sh ~/vcpkg/packages/*

9. Linux vs Windows 差异对照

项目LinuxWindows
引导脚本bootstrap-vcpkg.shbootstrap-vcpkg.bat / .ps1
默认编译器gcc/g++MSVC (cl.exe)
库文件后缀.a(静态)/ .so(动态).lib(静态)/ .dll(动态)
PATH 配置~/.bashrc~/.zshrc系统环境变量
CMake 生成器Unix Makefiles / NinjaVisual Studio / Ninja
常见三重x64-linux, x64-linux-staticx64-windows, x64-windows-static
编译多线程-j$(nproc) 自动由 MSBuild 管理
调试符号DWARF 格式PDB 文件

10. 最佳实践总结

实践说明
使用 manifest 模式在项目中创建 vcpkg.json 声明依赖,确保环境可复现
提交 vcpkg.json 到版本控制让团队所有成员使用相同的依赖版本
不要提交 vcpkg 自身在 CI 中通过 git clone 拉取,避免仓库膨胀
使用版本基线通过 vcpkg-configuration.json 锁定基线版本
CI/CD 中缓存 vcpkg缓存 packages/downloads/ 目录加速构建
按三重组织安装明确区分 debug/release、静态/动态、不同架构
定期更新 vcpkg 基线获取安全更新和新库支持
使用 overlay ports需要修改库源码时使用 overlay 而不是直接修改 ports/

附录 A:快速参考命令

命令用途
vcpkg search <pkg>搜索包
vcpkg install <pkg>安装包
vcpkg remove <pkg>卸载包
vcpkg list列出已安装包
vcpkg update检查可用更新
vcpkg upgrade升级所有包
vcpkg integrate install全局集成到构建系统
vcpkg integrate project生成单个项目的 MSBuild 集成
vcpkg depend-info <pkg>查看依赖信息
vcpkg clean清理编译中间文件
vcpkg version查看版本

附录 B:常用库推荐

领域推荐包
日志spdlog, glog
序列化nlohmann-json, protobuf, msgpack
网络libcurl, asio, cpp-httplib, grpc
测试gtest, catch2, doctest
命令行cxxopts, cli11
字符串fmt, fmtlib
图像stb, opencv
压缩zlib, lz4, zstd
数据库sqlite3, soci
加密openssl, libsodium
GUIimgui, wxwidgets, qt5

以上就是C/C++使用vcpkg管理跨平台包的最佳实践的详细内容,更多关于C/C++ vcpkg管理跨平台包的资料请关注脚本之家其它相关文章!

相关文章

  • 详解C++编程中断言static_assert的使用

    详解C++编程中断言static_assert的使用

    这篇文章主要介绍了C++编程中断言static_assert的使用,断言在debug时非常有用,是C++入门学习中的基础知识,需要的朋友可以参考下
    2016-01-01
  • C语言中的内存管理之掌握动态分配的技巧(最新推荐)

    C语言中的内存管理之掌握动态分配的技巧(最新推荐)

    在C语言编程中,内存管理是一项至关重要的技能,它直接关系到程序的性能和稳定性,特别是在处理大型数据集或需要灵活内存布局的场景下,本文将深入探讨C语言中的动态内存分配技巧,帮助开发者更好地掌握这一核心技能
    2025-03-03
  • C++中用指向数组的指针作函数参数

    C++中用指向数组的指针作函数参数

    多维数组名作为函数参数传递:在二维数组中,数组名a是指向首行a[0]的指针,也就是说a=&a[0]; a[0]是指向首元素a[0][0]的指针,也就是说a[0]=&a[0][0]
    2013-10-10
  • 详解C语言中函数宏的三种封装方式

    详解C语言中函数宏的三种封装方式

    函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销。本文就来聊聊函数宏的三种封装方式吧
    2023-03-03
  • C++中需要注意的细节你知道吗

    C++中需要注意的细节你知道吗

    这篇文章主要介绍了C++ 需要注意的几点细节,帮助大家更好的理解和学习C++,感兴趣的朋友可以了解下,希望能够给你带来帮助
    2021-09-09
  • 关于C++ string和c类型字符数组的对比

    关于C++ string和c类型字符数组的对比

    下面小编就为大家带来一篇关于C++ string和c类型字符数组的对比。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 详解VS2019+OpenCV-4-1-0+OpenCV-contrib-4-1-0

    详解VS2019+OpenCV-4-1-0+OpenCV-contrib-4-1-0

    这篇文章主要介绍了详解VS2019+OpenCV-4-1-0+OpenCV-contrib-4-1-0,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • C语言各种变量的初始化方式

    C语言各种变量的初始化方式

    这篇文章主要介绍了C语言各种变量的初始化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • C语言详尽图解函数栈帧的创建和销毁实现

    C语言详尽图解函数栈帧的创建和销毁实现

    我们知道c语言中函数都是被调用的,main函数里面能调用其他函数,其实main函数也是被别的函数调用的,下面通过本文给大家分享c语言函数栈帧的创建和销毁过程,一起看看吧
    2022-05-05
  • C++使用jsoncpp库解析Json

    C++使用jsoncpp库解析Json

    对json的解析操作是我们日常开发中经常会遇到的一个需求,下面这篇文章主要给大家介绍了关于C++使用jsoncpp库解析Json的相关资料,需要的朋友可以参考下
    2021-06-06

最新评论