# OpenECL **Repository Path**: jesson-deng/OpenECL ## Basic Information - **Project Name**: OpenECL - **Description**: OpenECL 是一个开源的 C/C++ 扩展库,提供了丰富的基础数据结构和实用工具类。该项目包含两个主要部分:纯 C 语言实现的基础库和 C++ 实现的扩展功能库。 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-03-18 - **Last Updated**: 2025-04-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenECL (Extension C/C++ Library) ## 项目介绍 OpenECL 是一个开源的 C/C++ 扩展库,提供了丰富的基础数据结构和实用工具类。该项目包含两个主要部分:纯 C 语言实现的基础库和 C++ 实现的扩展功能库。 ### 主要特性 - C 语言部分: - 数据结构:单链表、双链表、栈、队列、双向队列、哈希表 - 内存管理:共享内存池、普通内存池 - 完整的单元测试和代码覆盖率报告 - C++ 部分: - 配置文件处理:支持读写 INI 格式配置文件 - 字符串处理工具 - 网络通信组件 - 多线程工具 - 内存管理工具 - 多进程通信组件 - 算法工具库 ## 构建说明 ### 环境要求 - CMake 3.14 或更高版本 - C++ 14 兼容的编译器 - GCC/Clang (Linux) 或 MSVC (Windows) ### 编译步骤 #### Linux 平台 ```bash # 创建构建目录 mkdir build && cd build # 配置项目 # 作为库构建(默认) cmake .. # 或者启用调试模式 cmake -DENABLE_DEBUG=ON .. # 或者构建为可执行程序并启用覆盖率统计 cmake -DBUILD_AS_LIB=OFF -DENABLE_COVERAGE=ON .. # 编译 make # 生成覆盖率报告(如果启用了 ENABLE_COVERAGE) make coverage ``` #### Windows 平台 ```cmd # 创建构建目录 mkdir build cd build # 配置项目 cmake -G "Visual Studio 16 2019" .. # 编译 cmake --build . --config Release ``` ### 构建选项 - BUILD_AS_LIB: 是否构建为库(ON/OFF,默认:ON) - ENABLE_DEBUG: 是否启用调试模式(ON/OFF,默认:OFF) - ENABLE_COVERAGE: 是否启用代码覆盖率统计(ON/OFF,默认:OFF) ## 项目结构 ``` . ├── C/ # C 语言实现部分 │ ├── CoverageReport/ # 代码覆盖率报告 │ ├── scl/ # 生成的 C 库代码 │ ├── source/ # C 源代码 │ ├── test_with_coverage/ # 测试代码 │ └── unclassify/ # 开发中的代码 │ ├── Cpp/ # C++ 实现部分 │ ├── source/ │ │ ├── algorithm/ # 算法工具 │ │ ├── common/ # 通用工具 │ │ ├── config/ # 配置文件处理 │ │ ├── file/ # 文件操作 │ │ ├── memory/ # 内存管理 │ │ ├── multiprocess/ # 多进程通信 │ │ ├── xNetwork/ # 网络组件 │ │ ├── xString/ # 字符串处理 │ │ ├── xThread/ # 多线程工具 │ │ └── unclassify/ # 开发中的代码 │ └── test/ # 测试代码 ``` ## 使用示例 ### C 库使用示例 ```c #include // 使用双向链表 DList* list = dlist_create(); dlist_append(list, data); // ... dlist_destroy(list); ``` ### C++ 库使用示例 ```cpp #include // 使用 INI 配置文件 config::IniConfig cfg; cfg.loadFromFile("config.ini"); std::string value = cfg.getString("Section", "Key", "Default"); ``` ## 代码覆盖率 C 库的代码覆盖率报告可在 `C/CoverageReport/index.html` 查看。 如果启用了 ENABLE_COVERAGE 选项,C++ 库的覆盖率报告将生成在 `build/coverage/html/index.html`。 ## 贡献指南 欢迎提交 Issue 和 Pull Request。在提交代码前,请确保: 1. 代码符合项目的编码规范 2. 添加了适当的单元测试 3. 所有测试用例通过 4. 更新了相关文档 ## 联系方式 - 微信:qiuye11235 - QQ: 1057678868