mirror of
https://github.com/nlohmann/json.git
synced 2026-10-29 17:15:42 +00:00
deploy: a47170346a
This commit is contained in:
1 parent
b36f8a9821
commit
11a863958e
1180 files changed
+14211
-6025
No files matched your search
@@ -38,6 +38,22 @@ For example, the namespace name for version 3.11.2 with `JSON_DIAGNOSTICS` defin
|
||||
nlohmann::json_abi_diag_v3_11_2
|
||||
```
|
||||
|
||||
The name is assembled from these segments; pick a version and macros to see the resulting name:
|
||||
|
||||
<figure class="nj-integration-ns" data-nj-integration-ns aria-label="How the inline namespace name is assembled from its segments">
|
||||
<div class="nj-integration-ns__strip" aria-live="polite">
|
||||
<span class="nj-integration-ns__seg nj-integration-ns__seg--root"><code>nlohmann</code><small>root namespace</small></span>
|
||||
<span class="nj-integration-ns__seg nj-integration-ns__seg--sep"><code>::</code><small> </small></span>
|
||||
<span class="nj-integration-ns__seg nj-integration-ns__seg--abi"><code>json_abi</code><small>always</small></span>
|
||||
<span class="nj-integration-ns__seg nj-integration-ns__seg--tag"><code>_diag</code><small>JSON_DIAGNOSTICS=1</small></span>
|
||||
<span class="nj-integration-ns__seg nj-integration-ns__seg--ver"><code>_v3_11_2</code><small>version 3.11.2</small></span>
|
||||
</div>
|
||||
<figcaption>Version 3.11.2 with <code>JSON_DIAGNOSTICS</code> defined to <code>1</code>. ABI tags are appended in the order of the
|
||||
list above, the version suffix comes last.</figcaption>
|
||||
</figure>
|
||||
|
||||
<p class="nj-caption" markdown>The name of the inline namespace, assembled from its segments. Select a version and macros to see which ABI tags appear; a tag the chosen version does not have is disabled.</p>
|
||||
|
||||
## Purpose
|
||||
|
||||
Several incompatibilities have been observed. Amongst the most common ones is linking code compiled with different
|
||||
@@ -55,6 +71,8 @@ graph
|
||||
app --> library
|
||||
```
|
||||
|
||||
<p class="nj-caption" markdown>The application uses the library with `JSON_DIAGNOSTICS=1` and links `some library`, which uses the same library version with `JSON_DIAGNOSTICS=0`. Arrows point from a component to what it uses.</p>
|
||||
|
||||
In releases prior to 3.11.0, mixing any version of the JSON library with different `JSON_DIAGNOSTICS` settings would
|
||||
result in a crashing application. If `some_library` never passes instances of JSON library types to the application,
|
||||
this scenario became safe in version 3.11.0 and above due to the inline namespace yielding distinct symbol names.
|
||||
@@ -102,6 +120,15 @@ follows:
|
||||
Overriding the namespace and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You
|
||||
have been warned!
|
||||
|
||||
## See also
|
||||
|
||||
- [`NLOHMANN_JSON_NAMESPACE`](../api/macros/nlohmann_json_namespace.md) - the library namespace as macro
|
||||
- [`NLOHMANN_JSON_NAMESPACE_BEGIN`, `NLOHMANN_JSON_NAMESPACE_END`](../api/macros/nlohmann_json_namespace_begin.md) - open and close the library namespace
|
||||
- [`NLOHMANN_JSON_NAMESPACE_NO_VERSION`](../api/macros/nlohmann_json_namespace_no_version.md) - disable the version component
|
||||
- [Supported Macros](macros.md) - all supported macros
|
||||
- [Migration Guide](../integration/migration_guide.md) - do not hard-code the library namespace
|
||||
- [`basic_json`](../api/basic_json/index.md) - the main class and all its member functions
|
||||
|
||||
## Version history
|
||||
|
||||
- Introduced inline namespace (`json_v3_11_0[_abi-tag]*`) in version 3.11.0.
|
||||
|
||||
Reference in new issue
Block a user