FR: header-only amalgamation
维护者通常 12 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 35/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- c
- 领域
- build-system
调研方向
先查看 cJSON.h 和 cJSON.c,然后检查 issue 中提到的基于 Make 的 release 方案。比较提出的三种分发选项和 single-header wrapper;当选定的一种 header-only 方案能够针对所述的封闭环境用例实现可复现,并且其 artifact 位置已定义时,即视为完成。
由索引模型根据 Issue 内容生成。
描述
This could be done in three ways:
- documentation only "how to create that (may include 2 and/or 3)"
- release-only: a real single header file, created automatically (for example via Make) and uploaded to the release, either with a separate name like cjson_amalg.h / cjson_standalone.h or under cJSON.h
- a single file stored in this repo - either with a separate name like cjson_amalg.h / cjson_standalone.h or as plain cJSON.h
The following works for a single-header wrapper:
#define CJSON_HIDE_SYMBOLS
#include <cJSON/cJSON.h>
#include <cJSON/cJSON.c>
along with the following
cJSON.h (which could be a separate condition, of course):
#if defined(CJSON_HIDE_SYMBOLS)
-#define CJSON_PUBLIC(type) type CJSON_STDCALL
+#define CJSON_PUBLIC(type) static type CJSON_STDCALL
#elif defined(CJSON_EXPORT_SYMBOLS)
cJSON.c (which possibly should be declared as static instead of nothing or CJSON_PUBLIC in any case):
/* Duplication */
-cJSON * cJSON_Duplicate_rec(const cJSON *item, size_t depth, cJSON_bool recurse);
+CJSON_PUBLIC(cJSON *) cJSON_Duplicate_rec(const cJSON *item, size_t depth, cJSON_bool recurse);
CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse)
{
return cJSON_Duplicate_rec(item, 0, recurse );
}
-cJSON * cJSON_Duplicate_rec(const cJSON *item, size_t depth, cJSON_bool recurse)
+CJSON_PUBLIC(cJSON *) cJSON_Duplicate_rec(const cJSON *item, size_t depth, cJSON_bool recurse)
{
Use case: mostly "closed" environments where I can't easily adjust the build system to include cJSON.c (=currently need to do it each time)
- 主要语言
- C
- 星标
- 13k
- 派生
- 3.5k
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
DaveGamble/cJSON 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
DaveGamble/cJSON#1106 ·
维护者通常 12 天内回复
-
Undefined-Behavior in function cJSON_SetNumberHelper可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 2/5 1-3 小时 新手友好度 70/100
DaveGamble/cJSON#1100 · 1 个 reaction ·
维护者通常 12 天内回复
-
CMake config files contain absolute install paths可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 2/5 1-3 小时 新手友好度 86/100
DaveGamble/cJSON#1094 · 9 条评论 · 1 个 reaction ·
维护者通常 12 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
DaveGamble/cJSON#1093 ·
维护者通常 12 天内回复
-
Use-after-free in cJSONUtils_ApplyPatches when a patch removes the patch array可能已有人在做 @iliasabk 于 36 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 82/100
DaveGamble/cJSON#1082 ·
维护者通常 12 天内回复
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 76/100
-
area:ci priority:low type:chore
难度 2/5 1-3 小时 新手友好度 78/100
crazy-goat/php-fpm-ng#1021 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 74/100
-
难度 2/5 1-3 小时 新手友好度 78/100
CCExtractor/ccextractor#2425 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 68/100
pawelsalawa/letos#5839 ·