C++
约 2 分钟阅读
标签:主题
-
版本演进笔记C++ Version当前正式标准:C++23(ISO/IEC 14882:2024(E))。 · C++26 的 final working draft 已形成 Draft International Standard 的基础,但尚未成为已发布 ISO 标准。打开:/notes/languages/cpp/version
-
C + OOP, Generic, Async, Template, Operator Override
-
Source
.cpp、.cc、.cxx -
Header
.h、.hpp、.hh -
toolchain
- GCC:
g++ - LLVM Clang:
clang++ - Microsoft Visual C++:
cl.exe - CMake, Make, Ninjia
- Conan, vcpkg
- GDB, LLDB
- AddressSanitizer、UndefinedBehaviorSanitizer
clang-tidy、clang-format
- GCC:
-
Async
- co_await, co_return, co_yield, std::async,
Task<T> - FreeRTOS task - 独立栈、可抢占的任务
- co_await, co_return, co_yield, std::async,
-
参考
核心概念
- 类型系统:基础类型、类、枚举、联合体、类型推导和
const/constexpr - 资源管理:构造函数、析构函数、RAII、移动语义和智能指针
- 值类别:左值、右值、引用、完美转发
- 泛型编程:函数模板、类模板、特化、Concepts 和标准库算法
- 标准库:容器、迭代器、算法、字符串、文件系统、线程、同步原语和时间库
- 错误处理:异常、错误码、
std::expected等显式错误表示 - 并发:线程、锁、原子操作、Future、协程和并行算法
- 编译与链接:翻译单元、头文件、ODR、符号、ABI、静态库和动态库
- C 互操作:
extern "C"、C ABI、封装 C 接口和跨语言 FFI
#include <iostream>
int main() {
std::cout << "Hello, C++\n";
return 0;
}# GCC
g++ -std=c++20 -Wall -Wextra -Wpedantic -O2 main.cpp -o hello
# LLVM Clang
clang++ -std=c++20 -Wall -Wextra -Wpedantic -O2 main.cpp -o hello
./hello
# 调试构建可以加入调试信息和运行时检查:
clang++ -std=c++20 -Wall -Wextra -Wpedantic -g -fsanitize=address,undefined main.cpp -o hello-debugCMake
hello/
├── CMakeLists.txt
└── main.cppCMakeLists.txt:
cmake_minimum_required(VERSION 3.20)
project(hello LANGUAGES CXX)
add_executable(hello main.cpp)
target_compile_features(hello PRIVATE cxx_std_20)
target_compile_options(hello PRIVATE
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wall;-Wextra;-Wpedantic>
)cmake -S . -B build -G Ninja
cmake --build build
./build/hello代码组织
- 头文件放置声明,源文件放置实现;尽量减少头文件中的非必要实现内容
- 使用命名空间隔离公共符号,避免把
using namespace ...放入头文件 - 优先使用标准库和 RAII 管理资源,减少裸
new/delete - 对外接口优先明确所有权、生命周期、异常保证和线程安全约束
- 将编译器警告视为代码质量检查的一部分,并在 CI 中固定编译标准和关键警告选项
- C++ 项目应明确编译器版本、标准库实现、目标平台和 ABI 约束
参考
- isocpp.org
- ISO C++ 标准委员会相关资源和 C++ 社区入口
- C++ reference链接en.cppreference.com/w/cpp版本演进 · C + OOP, Generic, Async, Template, Operator Override · Source 、 、 · Header 、 、 · toolchain · GCC: · LLVM Clang: · Microsoft Visual C++:笔记:C++
- C++ 语言和标准库的检索式参考
- C++ Core Guidelines
- C++ 代码设计、接口和资源管理指南
- GCC C++ Dialect Options
- GCC 的 C 和 C++ 方言、标准版本及相关编译选项
- Clang C++ Language Status
- Clang 对不同 C++ 标准特性的支持情况
- CMake Documentation
- CMake 的命令、属性、生成器和构建系统参考
关联信息
反向链接、本文链接的其他页面和外部资料。
站内链接
- C++ Version笔记 · 版本演进
当前正式标准:C++23(ISO/IEC 14882:2024(E))。 · C++26 的 final working draft 已形成 Draft International Standard 的基础,但尚未成为已发布 ISO 标准。
参考资料
其他外链7 条
- clang.llvm.org/cxx_status.htmlclang.llvm.org/cxx_status.html
- cmake.org/cmake/help/latestcmake.org/cmake/help/latest
- en.cppreference.com/w/cppen.cppreference.com/w/cpp
- en.cppreference.com/w/cpp/compiler_supporten.cppreference.com/w/cpp/compiler_support
- gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.htmlgcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html
- isocpp.github.io/CppCoreGuidelines/CppCoreGuidelinesisocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
- isocpp.orgisocpp.org/