Saga3D API Documentation  1.0-RC4
irrpack.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2012 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 // include this file right before the data structures to be 1-aligned
6 // and add to each structure the PACK_STRUCT define just like this:
7 // struct mystruct
8 // {
9 // ...
10 // } PACK_STRUCT;
11 // Always include the irrunpack.h file right after the last type declared
12 // like this, and do not put any other types with different alignment
13 // in between!
14 
15 // byte-align structures
16 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined (__BCPLUSPLUS__)
17 # pragma warning(disable: 4103)
18 # pragma pack(push, packing)
19 # pragma pack(1)
20 # define PACK_STRUCT
21 #elif defined(__DMC__)
22 # pragma pack(push, 1)
23 # define PACK_STRUCT
24 #elif defined(__GNUC__)
25  // Using pragma pack might work with earlier gcc versions already, but
26  // it started to be necessary with gcc 4.7 on mingw unless compiled with -mno-ms-bitfields.
27  // And I found some hints on the web that older gcc versions on the other hand had sometimes
28  // trouble with pragma pack while they worked with __attribute__((packed)).
29 # if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))
30 # pragma pack(push, packing)
31 # pragma pack(1)
32 # define PACK_STRUCT
33 # else
34 # define PACK_STRUCT __attribute__((packed))
35  #endif
36 #else
37 # error compiler not supported
38 #endif
39