2008-08-08 15:18:28 +00:00
|
|
|
|
|
|
|
|
2009-01-10 17:58:06 +00:00
|
|
|
// ===============================================================================
|
|
|
|
// May be included multiple times - sets structure packing to 1
|
|
|
|
// for all supported compilers. #include <poppack1.h> reverts the changes.
|
|
|
|
//
|
|
|
|
// Currently this works on the following compilers:
|
|
|
|
// MSVC 7,8,9
|
|
|
|
// GCC
|
|
|
|
// BORLAND (complains about 'pack state changed but not reverted', but works)
|
2008-08-08 15:18:28 +00:00
|
|
|
//
|
2009-01-10 17:58:06 +00:00
|
|
|
//
|
|
|
|
// USAGE:
|
|
|
|
//
|
|
|
|
// struct StructToBePacked {
|
|
|
|
// } PACK_STRUCT;
|
|
|
|
//
|
|
|
|
// ===============================================================================
|
2008-08-08 15:18:28 +00:00
|
|
|
|
|
|
|
#ifdef AI_PUSHPACK_IS_DEFINED
|
|
|
|
# error poppack1.h must be included after pushpack1.h
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(_MSC_VER) || defined(__BORLANDC__) || defined (__BCPLUSPLUS__)
|
|
|
|
# pragma pack(push,1)
|
|
|
|
# define PACK_STRUCT
|
|
|
|
#elif defined( __GNUC__ )
|
|
|
|
# define PACK_STRUCT __attribute__((packed))
|
|
|
|
#else
|
|
|
|
# error Compiler not supported
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(_MSC_VER)
|
2009-01-10 17:58:06 +00:00
|
|
|
|
|
|
|
// C4103: Packing was changed after the inclusion of the header, propably missing #pragma pop
|
2008-08-08 15:18:28 +00:00
|
|
|
# pragma warning (disable : 4103)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define AI_PUSHPACK_IS_DEFINED
|
2008-10-13 16:45:48 +00:00
|
|
|
|
|
|
|
|