Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

FR: header-only amalgamation

Aperta
#981 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 12 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
c
Ambito
build-system

Direzione di ricerca

Inizia esaminando cJSON.h e cJSON.c, quindi analizza l’approccio al release basato su Make menzionato nell’issue. Confronta le tre opzioni di distribuzione proposte e il wrapper single-header; il lavoro è completato quando un approccio header-only scelto è riproducibile per il caso d’uso indicato in un ambiente chiuso e la posizione del relativo artefatto è definita.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

This could be done in three ways:

  1. documentation only "how to create that (may include 2 and/or 3)"
  2. 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
  3. 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)

Lingua principale
C
Stelle
13k
Fork
3.5k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di DaveGamble/cJSON

Tutte le issue di DaveGamble/cJSON

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.