我想让gcc处理如下的pack语用:
#define _CTR_PACKING 4
#pragma pack(push, _CRT_PACKING)默认情况下,MSVC允许这种构造。
通过-fms-extensions点击enabled this behavior。
在搜索与gcc等效的代码时,我找到了对宏HANDLE_PRAGMA_PACK_PUSH_POP和HANDLE_PRAGMA_PACK_WITH_EXPANSION的引用,但即使在通过-DHANDLE_PRAGMA_PACK_WITH_EXPANSION=1或作为环境变量添加了它们之后,gcc仍然什么也不做。
怎样才能让gcc扮演微软的角色,并与-fms-extensions保持一致?
发布于 2016-04-26 15:15:02
gcc宏HANDLE_PRAGMA_PACK_WITH_EXPANSION是一个宏,由gcc目标用来指示它是否支持在编译指示中扩展宏,它不是一个动态启用的开关。
相反,您可以使用标准C的_Pragma操作符,它将转换为编译器的编译指示,并且支持宏扩展,因为它是语言的一部分。这是一个示例:
#define STR(s) #s
#define _CTR_PACKING 1
#define PACKSTR(x) STR(pack(x))
_Pragma(PACKSTR(_CTR_PACKING))https://stackoverflow.com/questions/36857473
复制相似问题