ZeroStyle 是一套面向个人项目的轻量 C++ 风格层与 header-only 工具库。
它的目标不是重新发明标准库,也不是构建一套底层运行时框架,而是在保持标准库兼容的前提下,为 C++ 项目提供统一的命名规范、常用 alias、轻量工具类型和工程约定。
- 标准库优先,不做无语义封装。
- Header-only 优先,方便复制、接入和审查。
- 低侵入,不强迫项目接受特定运行时模型。
- 风格统一,通过
include/ZeroStyle.h和include/Zero/下的独立头文件提供基础能力。 - 可扩展,但新增能力必须保持边界清晰。
include/Zero/Types.h:基础整数、字符串、路径、容器、智能指针 alias。 来自标准库的非模板纯 alias 使用Std来源前缀,模板 alias 使用T前缀。include/Zero/Macros.h:ZERO_NODISCARD、ZERO_NORETURN、ZERO_MAYBE_UNUSED、Clang 线程安全注解等宏。include/Zero/Config.h:C++ 版本检测、std::expected检测、基础断言入口。include/Zero/Error.h:EErrorCode、SError、MakeError。include/Zero/Result.h:TResult<T>、TResult<void>、ValueOr、Map、AndThen,C++23 可用时内部使用std::expected。include/Zero/Concepts.h:常用 C++20 concepts。include/Zero/Diagnostics.h:ZERO_CHECK、ZERO_ENSURE、ZERO_UNREACHABLE。include/Zero/Scope.h:TScopeExit、MakeScopeExit。include/Zero/Flags.h:显式 opt-in 的enum class位运算辅助。include/Zero/StringUtils.h:Trim、StartsWith、EndsWith、SplitView、Split。include/Zero/PathUtils.h:路径展示、扩展名和词法规范化辅助。include/Zero/Format.h:EErrorCode与SError的轻量字符串格式化。include/ZeroStyle.h:聚合入口头文件。
作为子目录接入:
add_subdirectory(path/to/ZeroStyle)
target_link_libraries(MyTarget
PRIVATE
Zero::ZeroStyle
)推荐在项目里建立一个公共基础头,例如 ProjectCore.h,由它选择性转发 ZeroStyle 中需要的类型。公共头文件不要写 using namespace Zero;。
// ProjectCore.h
#pragma once
#include "ZeroStyle.h"
namespace MyProject {
using Zero::StdPath;
using Zero::StdString;
using Zero::StdStringView;
using Zero::TResult;
using Zero::TVector;
using Zero::int32;
} // namespace MyProject业务头文件通过项目公共头获得统一风格:
#include "ProjectCore.h"
namespace MyProject {
ZERO_NODISCARD TResult<StdString> LoadText(const StdPath& FilePath);
} // namespace MyProject默认只暴露 ZERO_ 前缀宏,避免污染宿主项目的全局预处理符号。个人项目如果希望使用短宏,可以在包含 ZeroStyle 前显式启用:
#define ZERO_ENABLE_SHORT_MACROS
#include "ZeroStyle.h"
NODISCARD Zero::TResult<Zero::StdString> LoadText();如果只需要某一部分,也可以单独包含:
#include "Zero/Macros.h"build.bat --tests
build.bat --examples或直接使用 CMake:
cmake -S . -B build -DZERO_BUILD_TESTS=ON -DZERO_BUILD_EXAMPLES=ON
cmake --build build --config Release
ctest --test-dir build -C Release --output-on-failure也可以使用 CMake presets:
cmake --preset dev
cmake --build --preset dev
ctest --preset dev当前 presets 默认提供 Visual Studio 2022 开发配置,也提供 ninja-gcc、ninja-gcc-cxx23、ninja-clang、ninja-clang-cxx23 等 Linux/Unix 风格配置。
examples/basic-console:展示项目公共头ProjectCore.h、ZERO_NODISCARD、ZERO_NODISCARD_TYPE、TResult和 alias 的默认接入方式。