summaryrefslogtreecommitdiff
path: root/src/stdafx.h
diff options
context:
space:
mode:
authorCharles Pigott <charlespigott@googlemail.com>2018-06-18 21:21:45 +0100
committerPatric Stout <truebrain@openttd.org>2018-07-19 20:24:17 +0200
commit63898f61b0ce4e321b5a7c39da2cfb5b16cfde5f (patch)
tree549ee0acd8d9af0f946cd8024e2d4839f82aeca8 /src/stdafx.h
parent93469a92f20246d100d6ca8888ba621223e480ff (diff)
downloadopenttd-63898f61b0ce4e321b5a7c39da2cfb5b16cfde5f.tar.xz
Codechange: Rearrange struct packing defines and make MinGW use _Pragma pack style
Diffstat (limited to 'src/stdafx.h')
-rw-r--r--src/stdafx.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/stdafx.h b/src/stdafx.h
index 621b1f61d..54709d151 100644
--- a/src/stdafx.h
+++ b/src/stdafx.h
@@ -133,7 +133,6 @@
#define NORETURN __attribute__ ((noreturn))
#define CDECL
#define __int64 long long
- #define GCC_PACK __attribute__((packed))
/* Warn about functions using 'printf' format syntax. First argument determines which parameter
* is the format string, second argument is start of values passed to printf. */
#define WARN_FORMAT(string, args) __attribute__ ((format (printf, string, args)))
@@ -158,7 +157,6 @@
#if defined(__WATCOMC__)
#define NORETURN
#define CDECL
- #define GCC_PACK
#define WARN_FORMAT(string, args)
#define FINAL
#define FALLTHROUGH
@@ -224,7 +222,6 @@
#endif
#define CDECL _cdecl
- #define GCC_PACK
#define WARN_FORMAT(string, args)
#define FINAL sealed
@@ -303,6 +300,16 @@
#define PATHSEPCHAR '/'
#endif
+#if defined(_MSC_VER) || defined(__WATCOMC__)
+# define PACK_N(type_dec, n) __pragma(pack(push, n)) type_dec; __pragma(pack(pop))
+#elif defined(__MINGW32__)
+# define PRAGMA(x) _Pragma(#x)
+# define PACK_N(type_dec, n) PRAGMA(pack(push, n)) type_dec; PRAGMA(pack(pop))
+#else
+# define PACK_N(type_dec, n) type_dec __attribute__((__packed__, aligned(n)))
+#endif
+#define PACK(type_dec) PACK_N(type_dec, 1)
+
/* MSVCRT of course has to have a different syntax for long long *sigh* */
#if defined(_MSC_VER) || defined(__MINGW32__)
#define OTTD_PRINTF64 "%I64d"