[Base] Use pragma pack for non msvc as well.
- Pack attributes may be ignored by GCC
This commit is contained in:
@@ -85,18 +85,17 @@
|
||||
#endif // XE_PLATFORM_MAC
|
||||
|
||||
#if XE_COMPILER_MSVC
|
||||
#define XEPACKEDSTRUCT(name, value) \
|
||||
__pragma(pack(push, 1)) struct name value __pragma(pack(pop));
|
||||
#define XEPACKEDSTRUCTANONYMOUS(value) \
|
||||
__pragma(pack(push, 1)) struct value __pragma(pack(pop));
|
||||
#define XEPACKEDUNION(name, value) \
|
||||
__pragma(pack(push, 1)) union name value __pragma(pack(pop));
|
||||
#define _XEPACKEDSCOPE(body) __pragma(pack(push, 1)) body __pragma(pack(pop));
|
||||
#else
|
||||
#define XEPACKEDSTRUCT(name, value) struct __attribute__((packed)) name value;
|
||||
#define XEPACKEDSTRUCTANONYMOUS(value) struct __attribute__((packed)) value;
|
||||
#define XEPACKEDUNION(name, value) union __attribute__((packed)) name value;
|
||||
#define _XEPACKEDSCOPE(body) \
|
||||
_Pragma("pack(push, 1)") body; \
|
||||
_Pragma("pack(pop)");
|
||||
#endif // XE_PLATFORM_WIN32
|
||||
|
||||
#define XEPACKEDSTRUCT(name, value) _XEPACKEDSCOPE(struct name value)
|
||||
#define XEPACKEDSTRUCTANONYMOUS(value) _XEPACKEDSCOPE(struct value)
|
||||
#define XEPACKEDUNION(name, value) _XEPACKEDSCOPE(union name value)
|
||||
|
||||
namespace xe {
|
||||
|
||||
#if XE_PLATFORM_WIN32
|
||||
|
||||
Reference in New Issue
Block a user