gpt4 book ai didi

c - 启用 HANDLE_PRAGMA_PACK_WITH_EXPANSION

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:42 26 4
gpt4 key购买 nike

我希望 gcc 处理 pack 编译指示,如下所示:

#define _CTR_PACKING 4
#pragma pack(push, _CRT_PACKING)

MSVC 默认允许这种构造。

铿锵 enabled this behavior通过 -fms-extensions

在搜索 gcc 等效项时,我找到了对宏 HANDLE_PRAGMA_PACK_PUSH_POPHANDLE_PRAGMA_PACK_WITH_EXPANSION 的引用,但即使在通过 -DHANDLE_PRAGMA_PACK_WITH_EXPANSION=1 或作为环境变量,gcc 仍然什么都不做。

如何使用 -fms-extensions 让 gcc 像 MSVC 和 Clang 一样运行?

最佳答案

gcc 宏 HANDLE_PRAGMA_PACK_WITH_EXPANSION 是 gcc 目标使用的宏,用于指示它是否支持 pragma 指令中的宏扩展,它不是动态启用的开关。

相反,您可以使用标准 C 的 _Pragma 运算符,它转换为编译器的 pragma 指令,并且它支持宏扩展,因为它是语言的一部分。这是一个例子:

#define STR(s) #s
#define _CTR_PACKING 1

#define PACKSTR(x) STR(pack(x))

_Pragma(PACKSTR(_CTR_PACKING))

关于c - 启用 HANDLE_PRAGMA_PACK_WITH_EXPANSION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36857473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com