From 3aaa4ad8c290af87d9bb9e24447f9cd6f9a79eab Mon Sep 17 00:00:00 2001 From: Petteri Aimonen Date: Mon, 29 Oct 2012 19:03:19 +0200 Subject: [PATCH] Add extern "C" to header files. Update issue 35 Status: FixedInGit --- generator/nanopb_generator.py | 9 ++++++++- pb_decode.h | 8 ++++++++ pb_encode.h | 7 +++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 2267238..bd164e0 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 2be9205..e9f8ced 100644 --- a/pb_decode.h +++ b/pb_decode.h @@ -12,6 +12,10 @@ #include #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 af6cc3c..85a8297 100644 --- a/pb_encode.h +++ b/pb_encode.h @@ -9,6 +9,10 @@ #include #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 -- 2.16.6