Add extern "C" to header files.
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>
Mon, 29 Oct 2012 17:03:19 +0000 (19:03 +0200)
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>
Mon, 29 Oct 2012 17:03:19 +0000 (19:03 +0200)
Update issue 35
Status: FixedInGit

generator/nanopb_generator.py
pb_decode.h
pb_encode.h

index 2267238..bd164e0 100644 (file)
@@ -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'
 
index 2be9205..e9f8ced 100644 (file)
 #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
index af6cc3c..85a8297 100644 (file)
@@ -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