aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generator/nanopb_generator.py9
-rw-r--r--pb_decode.h8
-rw-r--r--pb_encode.h7
3 files changed, 23 insertions, 1 deletions
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index 2267238c..bd164e03 100644
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -438,7 +438,10 @@ def generate_header(dependencies, headername, enums, messages):
for dependency in dependencies:
noext = os.path.splitext(dependency)[0]
yield '#include "%s.pb.h"\n' % noext
- yield '\n'
+
+ yield '#ifdef __cplusplus\n'
+ yield 'extern "C" {\n'
+ yield '#endif\n\n'
yield '/* Enum definitions */\n'
for enum in enums:
@@ -502,6 +505,10 @@ def generate_header(dependencies, headername, enums, messages):
yield 'STATIC_ASSERT((%s), YOU_MUST_DEFINE_PB_FIELD_32BIT)\n' % assertion
yield '#endif\n'
+ yield '\n#ifdef __cplusplus\n'
+ yield '} /* extern "C" */\n'
+ yield '#endif\n'
+
# End of header
yield '\n#endif\n'
diff --git a/pb_decode.h b/pb_decode.h
index 2be92050..e9f8ced8 100644
--- a/pb_decode.h
+++ b/pb_decode.h
@@ -12,6 +12,10 @@
#include <stdbool.h>
#include "pb.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* Lightweight input stream.
* You can provide a callback function for reading or use
* pb_istream_from_buffer.
@@ -102,4 +106,8 @@ bool pb_skip_varint(pb_istream_t *stream);
bool pb_skip_string(pb_istream_t *stream);
#endif
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
#endif
diff --git a/pb_encode.h b/pb_encode.h
index af6cc3c5..85a82973 100644
--- a/pb_encode.h
+++ b/pb_encode.h
@@ -9,6 +9,10 @@
#include <stdbool.h>
#include "pb.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* Lightweight output stream.
* You can provide callback for writing or use pb_ostream_from_buffer.
*
@@ -99,5 +103,8 @@ bool pb_enc_string(pb_ostream_t *stream, const pb_field_t *field, const void *sr
* instead, it has the same functionality with a less confusing interface. */
bool pb_enc_submessage(pb_ostream_t *stream, const pb_field_t *field, const void *src);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
#endif