diff --git a/README.md b/README.md index 2de89c66730230b8f612e3b8a6c0af96e262b300..0c3e51234100829237f9dc58132da96ca6cd7359 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Ultralightweight JSON parser in ANSI C. * [Building](#building) * [Some JSON](#some-json) * [Here's the structure](#heres-the-structure) + * [Caveats](#caveats) * [Enjoy cJSON!](#enjoy-cjson) ## License @@ -372,6 +373,28 @@ The `test.c` code shows how to handle a bunch of typical cases. If you uncomment the code, it'll load, parse and print a bunch of test files, also from [json.org](http://json.org), which are more complex than I'd care to try and stash into a `const char array[]`. +### Caveats + +#### C Standard + +cJSON is written in ANSI C (or C89, C90). If your compiler or C library doesn't follow this standard, correct behavior is not guaranteed. + +NOTE: ANSI C is not C++ therefore it shouldn't be compiled by a C++ compiler. You can compile it with a C compiler and link it with your C++ code however. Although compiling with a C++ compiler might work, correct behavior is not guaranteed. + +#### Floating Point Numbers + +cJSON does not officially support any `double` implementations other than IEE754 double precision floating point numbers. It might still work with other implementations but bugs with these will be considered invalid. + +The maximum length of a floating point literal that cJSON supports is currently 63 characters. + +#### Thread Safety + +In general cJSON is **not thread safe**. + +However it is thread safe under the following conditions: +* You don't use `cJSON_GetErrorPtr` (you can use the `return_parse_end` parameter of `cJSON_ParseWithOpts` instead) +* You only ever call `cJSON_InitHooks` before using cJSON in any threads. + # Enjoy cJSON! - Dave Gamble, Aug 2009