littlebot
Published on 2025-04-14 / 4 Visits
0

【源码】基于C和C++的嵌入式标准库项目

项目简介

本项目是一个受STL启发的嵌入式库,适用于C和C++语言。它为嵌入式软件项目提供使用标准模板库功能的途径,解决嵌入式平台上使用编译器提供的STL实现时面临的问题,同时为C99项目提供类似STL的功能,避免重复造轮子。此外,该库还为性能关键项目(如游戏项目)提供支持,可避免动态分配并使用高效的无锁结构。

项目的主要特性和功能

C++部分

  • 支持C++03及更新版本,部分特性需C++11及以上。
  • 提供静态分配的容器,如vector_smap_s
  • 实现了简单的原子操作、互斥锁和智能指针。
  • 包含单读单写无锁FIFO,还有多种多读写模式的FIFO计划实现。
  • 提供新颖的状态机实现,可轻松创建单元测试并绘制Graphviz状态机图。

C部分

  • 提供平台抽象的变量对齐功能。
  • 实现简单的原子函数。
  • 有类似vector_s的容器和格式化功能。
  • 有多种读写模式的无锁FIFO计划实现。

CMake方面

  • 是使用CMake作为构建系统的优秀项目模板,遵循最新最佳实践。
  • 支持多平台,使用工具链文件进行交叉编译。
  • 库使用CMake的target_xx命令管理依赖。
  • 各子文件夹有unittest单元测试目录和playground测试目录。

安装使用步骤

前提条件

假设用户已经下载了本项目的源码文件,并且已安装CMake和相应的编译器。

步骤

  1. 进入项目根目录。
  2. 创建构建目录并进入: bash mkdir -p _build/nestle cd _build/nestle/
  3. 运行CMake生成构建文件: bash cmake ../../nestle
  4. 编译项目: bash make -j 也可以使用QtCreator或其他方式处理CMake项目。

非CMake项目使用

若要在非CMake项目中使用,可将所有.c.cpp文件添加到自己的构建系统,并在编译器命令行设置以下预处理器宏: - -DCXX_STANDARD_LIBRARY=(Possible values: 98, 11, 14, 17, 20) - -DCXX_STANDARD=(Possible values: 98, 11, 14, 17, 20) - -DC_STANDARD=(Possible values: 99) - -DNESTLE_PLATFORM_TYPE=(Possible values: 1 (NESTLE_PLATFORM_TYPE_DESKTOP), 2 (NESTLE_PLATFORM_TYPE_EMBEDDED)) - -DNESTLE_SYSTEM_NAME=(Possible values: 1 (NESTLE_SYSTEM_NAME_LINUX), 2 (NESTLE_SYSTEM_NAME_WINDOWS), 3 (NESTLE_SYSTEM_NAME_OSX), 4 (NESTLE_SYSTEM_NAME_FREERTOS) )

注意事项

  • Windows和Mac支持尚未测试,添加支持应该不复杂。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】