我的C++规范 - 准备编译环境

准备编译环境

最后的阻拦

如果你还没有意识到C++有多麻烦,这一篇会让你认识到这一点,如果你无法完整这一篇的教学内容,那你现在推出还没有任何损失
C++需要开发者从零构建和管理自己的项目,如果你是新手,那就请在我的指引下,配合AI来搭建并运行你的第一个C++程序

你需要准备的东西

如果前面的内容你都没看,那这里将为你列出你需要准备的所有东西,接下来我会给出选择他们的原因
使用Linux操作系十分主要,很多C++程序都需要运行在Linux系统,甚至是跨平台的同时运行在Linux和Windows之中,需要你提前掌握
使用VSCode编辑器是因为C++没有太好的IDE工具,VSCode提供的插件也足以让你轻松编写代码,因为C++没有官方项目管理工具,需要你自己管理项目,所以就算使用所谓的IDE工具最后依旧要面对这个问题,建议从入门就开始管理你的项目
CMake编译是跨平台的,而且是C++项目中广泛使用的编译工具,这一点很主要,即使你不用也要会看懂,那为什么不一开始就掌握,虽然CMake有很多缺点,但也是C++能找到的最好编译工具

环境准备
1.Google浏览器(可以访问外网) 2.AI大模型(可以回答编程相关问题) 3.Linux操作系统(可以简单使用) 4.VSCode编辑器(用于编写代码) 5.G++编译器(用于在Linux上编译C++代码) 6.CMake工具(用于管理编译C++代码方式) 

项目的起点

在创建项目之前,你需要问自己为什么创建这个项目,这是一个通用的思想
以我出发,我选择的是 mcpp 这个项目名称,意味“我的C++”含义是以自己为出发点的C++教学项目,我会以这个名称规则命名我的项目以及函数名称等
良好的项目名称是 编程规范 的重要一步
项目名称,是编程规范的起点,项目名称会影响到包括项目中函数/类/命名空间等,各类自定义命名的命名规范,在项目中良好的命名规范十分重要

项目结构
mcpp . ├── CMakeLists.txt └── main.cpp 

这是第一个程序的项目结构,非常简单也非常关键
创建的mcpp项目文件夹中,存在两个文件,你可以从这个项目结构中理解C++程序的构建过程
main.cpp 是C++语言的文件命名规则,以 .cpp 为后缀,是编写C++代码逻辑的地方
CMakeLists.txt 是CMake的编译文件,用于编译一整个项目,是编写项目编译规则的地方

第一个程序代码

main.cpp
int main(int argc, char **argv) { return 0; } 
CMakeLists.txt
cmake_minimum_required(VERSION 4.0) project(mcpp LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_BUILD_TYPE "Debug") add_executable(${CMAKE_PROJECT_NAME} main.cpp) 

你可以使用AI来分析并理解这两段代码
main.cpp 文件中是最小的C++代码,是可编译和运行的
CMakeLists.txt 文件中出现了 “11” 字样,没错使用的正是C++11标准,出现了 “main.cpp” 字样,表示编译的文件是 “main.cpp”,这是他们之间的关联
C++11是现代编程的起点,也是必须要学习的版本,尽管新标准已经到C++26,现在依旧有大部分项目建立在此基础之上,这是最佳入门版本

格式化代码
Ctrl + A // 全选 Ctrl + K // 格式化 

编写完代码之后,还有一个更重要的事情,许多新手编写的代码乱糟糟的,可以说是惨不忍睹,完全让人看不懂在写什么,所以需要格式化代码,让代码保持整洁有序,上面是VSCode的 全选 + 格式化代码 快捷键
保持代码整洁是 编程规范 的重要一步

编译并运行

在编写完成上面的两个文件之后,我们需要编译代码成为可执行文件,首选需要确保终端(terminal)所在的目录是mcpp,即项目的根目录,然后执行命令

执行命令
mkdir build cd build cmake .. cmake --build . ./mcpp 
命令解析
1.在mcpp目录下创建build目录 2.进入build目录 3.使用CMake选择CMakeLists.txt文件位置,并根据文件生成系统Makefile 4.执行Makefile编译程序,编译完成会根据Makefile生成mcpp文件 5.执行mcpp可执行文件 

如果没有任何错误,恭喜你成功运行了你的程序,第一个C++程序中的代码并没有任何内容,没有任何惊喜,也不会打印经典的 hello world 这是下一课的内容,请接收这枯燥的一幕,这是开发者必须面对的问题

编译后项目结构
mcpp . ├── build │ └── mcpp ├── CMakeLists.txt └── main.cpp 

在编译完成之后,会创建出build/mcpp这个可执行文件,我们执行的就是这个可执行程序,也是main.cpp代码文件最后生成的运行结果
到这里,我们学习了如何将C++代码编译为可执行文件,其中编译过程涉及到很多细节,这些细节也十分重要,你可以去了解编译方面的更多知识,但这一点不妨碍对后续内容的理解

跟随我的脚步

在例子中,编译和运行可执行都很麻烦,这也是C++的缺点之一,如果你还不熟悉这些操作,那么我建议先使用命令行运行代码,有利于了解编译流程
当然,我在Github上提供了完整的项目,以及搭建了一键运行的环境,无需通过命令行执行命令,可以直接在VSCode上直接运行代码示例,省去了大部分繁琐的步骤,如果你感兴趣可以学习并使用
上面的项目结构和编译文件是我单开的项目,不是 mcpp 项目的实际项目结构,下面我将给出 mcpp 的实际项目结构和编译文件
接下来的教学都会以 mcpp 项目出发,请你掌握 mcpp 的编译规则以方便后续的学习

项目结构
mcpp . ├── bash ├── doc ├── example │ ├── 01 │ │ ├── build │ │ │ └── mcpp │ │ └── main.cpp │ ├── 02 │ │ ├── build │ │ │ └── mcpp │ │ └── main.cpp │ ├── CMakeLists.txt │ └── run.sh └── README.md 

可以看到,mcpp 本身是一个教学项目,所有的示例代码都在 example 文件夹下,而且存在 01 02 等没有含义的名称,这是不得已而为之,这是些文件夹命名以文章相关,本篇文章所采用的代码就是 01/main.cpp 的代码文件,文章存放在 doc 文件夹,他们的关联会在 README.md 文件的目录中体现
其中 01/main.cpp 生成的 01/build/mcpp 是可执行文件,每一个目录下都有独立的 mcpp 可执行文件,01 02 文件夹两者的 mcpp 可执行文件没有任何关联,可以看作是完全独立的项目代码

CMakeLists.txt
# 设置最小版本 cmake_minimum_required(VERSION 4.0) # 设置项目名称 project(mcpp LANGUAGES CXX) # 设置C++版本 set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 设置调试模式 set(CMAKE_BUILD_TYPE "Debug") # 设置源文件 if(ALL OR DIR01) set(SRC_FILES 01/main.cpp ) endif() if(ALL OR DIR02) set(SRC_FILES 02/main.cpp ) endif() # 生成可执行程序 add_executable(${CMAKE_PROJECT_NAME} ${SRC_FILES}) 

这是 mcpp 项目的 CMakeLists.txt 文件,可以看出这个编译文件在不同的参数 DIR01 DIR02 下会编译不同目录的文件,来达到一个编译多个可执行文件的目的
这其实是不好的操作,应该单独的在 01 02 目录下编写 CMakeLists.txt 子编译文件,但 mcpp 项目并不复杂才决定偷懒的使用一个 CMakeLists.txt 控制所有代码文件编译流程
你可以去了解编译相关的知识,让你进一步理解项目编译

VSCode插件安装

C/C++ C/C++ Extension Pack CMake Tools 

上面是必须要安装的插件,VSCode需要安装插件才能正常编写C++代码,否则无法补全代码,无法高亮显示关键字等,会导致无法正常编码

更新声明

文章会总是会第一时间更新到Github项目路径中,再同步到其他平台,如果你知道到最新消息,可以关注该项目

项目路径

https://github.com/HellowAmy/mcpp.git 

Read more

Flutter 三方库 ethereum_addresses 的鸿蒙化适配指南 - 掌控区块链地址资产、精密校验治理实战、鸿蒙级 Web3 专家

Flutter 三方库 ethereum_addresses 的鸿蒙化适配指南 - 掌控区块链地址资产、精密校验治理实战、鸿蒙级 Web3 专家

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 ethereum_addresses 的鸿蒙化适配指南 - 掌控区块链地址资产、精密校验治理实战、鸿蒙级 Web3 专家 在鸿蒙跨平台应用执行高级区块链身份管理与多维以太坊地址资产指控(如构建一个支持全场景秒级交互的鸿蒙大型全量钱包中枢、处理海量 Ethereum Address Payloads 的语义认领或是实现一个具备极致指控能力的资产管理后台地址审计中心)时,如果仅仅依赖官方的基础 Regular Expression 或者是极其繁琐的手动 Checksum 计算,极易在处理“由于大小写敏感导致的资产认领偏移”、“高频地址校验下的认领假死”或“由于多语言环境导致的符号解析冲突死结”时陷入研发代码区块链逻辑崩溃死循环。如果你追求的是一种完全对齐现代 Ethereum 标准、支持全量高度可定制校验(Type-safe Web3)且具备极致指控确定性的方案。今天我们要深度解析的 ethereum_addresses——一个专注于解决“地址

By Ne0inhk
【ComfyUI】蓝耘元生代 | ComfyUI深度解析:高性能AI绘画工作流实践

【ComfyUI】蓝耘元生代 | ComfyUI深度解析:高性能AI绘画工作流实践

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT),经海量数据训练后能完成文本生成、图像创作等复杂任务,显著提升效率,但面临算力消耗、数据偏见等挑战。当前正加速与教育、科研融合,未来需平衡技术创新与伦理风险,推动可持续发展。 文章目录 * 前言 * 一、ComfyUI简介 * (一)ComfyUI概述 * (二)ComfyUI与WebUI的对比 * (三)ComfyUI使用场景 * 二、蓝耘元生代平台简介 * 三、蓝耘元生代平台工作流(ComfyUI)创建 * (一)注册蓝耘智算平台账号 * (二)部署ComfyUI工作流 * (三)ComfyUI初始界面解析 * (四)完成创建工作流 * 四、技术文档说明 * (一)平台架构深度剖析

By Ne0inhk
win11本地部署openclaw实操第2集-让小龙虾具有telegram机器人能力和搜索网站能力

win11本地部署openclaw实操第2集-让小龙虾具有telegram机器人能力和搜索网站能力

1 按照第一集的部署完成后,我们就开始考虑给小龙虾增加telegram机器人和搜索网站能力,实现效果如下: 2 telegram机器人能力部署 C:\Users\Administrator.openclaw的配置文件openclaw.json 增加一段内容 "channels":{"telegram":{"enabled": true, "dmPolicy":"pairing", "botToken":"你的telegram机器人的token", "groupPolicy":"allowlist", "streamMode":"partial", "network":{"

By Ne0inhk
OpenClaw 完整部署指南:安装 + 三大 Coding Plan 配置 + CC Switch + 飞书机器人

OpenClaw 完整部署指南:安装 + 三大 Coding Plan 配置 + CC Switch + 飞书机器人

OpenClaw 完整部署指南:安装 + 三大 Coding Plan 配置 + CC Switch + 飞书机器人 * 📋 文章目录结构 * 1.3 一键安装 OpenClaw(推荐) * 1.4 通过 npm 手动安装 * 1.5 运行 Onboard 向导 * 1.6 验证安装 * 步骤二:配置 Coding Plan 模型 * 🅰️ 选项 A:阿里百炼 Coding Plan * A.1 订阅与获取凭证 * A.2 在 OpenClaw 中配置 * A.3 可用模型列表

By Ne0inhk