Add compilation option to disable struct packing.

Update issue 136
Status: FixedInGit
This commit is contained in:
Petteri Aimonen
2014-12-22 20:52:40 +02:00
parent baf44b367f
commit cfc517f36b
2 changed files with 13 additions and 1 deletions

View File

@@ -24,6 +24,9 @@ __BIG_ENDIAN__ Set this if your platform stores integers and
floats in big-endian format. Mixed-endian floats in big-endian format. Mixed-endian
systems (different layout for ints and floats) systems (different layout for ints and floats)
are currently not supported. are currently not supported.
PB_NO_PACKED_STRUCTS Disable packed structs. Increases RAM usage but
is necessary on some platforms that do not
support unaligned memory access.
PB_ENABLE_MALLOC Set this to enable dynamic allocation support PB_ENABLE_MALLOC Set this to enable dynamic allocation support
in the decoder. in the decoder.
PB_MAX_REQUIRED_FIELDS Maximum number of required fields to check for PB_MAX_REQUIRED_FIELDS Maximum number of required fields to check for

11
pb.h
View File

@@ -17,6 +17,10 @@
* stores the most-significant byte first. */ * stores the most-significant byte first. */
/* #define __BIG_ENDIAN__ 1 */ /* #define __BIG_ENDIAN__ 1 */
/* Define this if your CPU / compiler combination does not support
* unaligned memory access to packed structures. */
/* #define PB_NO_PACKED_STRUCTS 1 */
/* Increase the number of required fields that are tracked. /* Increase the number of required fields that are tracked.
* A compiler warning will tell if you need this. */ * A compiler warning will tell if you need this. */
/* #define PB_MAX_REQUIRED_FIELDS 256 */ /* #define PB_MAX_REQUIRED_FIELDS 256 */
@@ -75,7 +79,12 @@
/* Macro for defining packed structures (compiler dependent). /* Macro for defining packed structures (compiler dependent).
* This just reduces memory requirements, but is not required. * This just reduces memory requirements, but is not required.
*/ */
#if defined(__GNUC__) || defined(__clang__) #if defined(PB_NO_PACKED_STRUCTS)
/* Disable struct packing */
# define PB_PACKED_STRUCT_START
# define PB_PACKED_STRUCT_END
# define pb_packed
#elif defined(__GNUC__) || defined(__clang__)
/* For GCC and clang */ /* For GCC and clang */
# define PB_PACKED_STRUCT_START # define PB_PACKED_STRUCT_START
# define PB_PACKED_STRUCT_END # define PB_PACKED_STRUCT_END