1

我有许多项目使用的数百个 C++ 源文件。它们是很久以前写的,它们都被包装在编译指示中:

#pragma pack(push, 1)
/* Code here ... */
#pragma pack(pop)

我负责移植到 x64。在需要进行的许多更改中,其中之一是需要为 Windows API 调用提供 16 字节对齐的堆栈。在对我们的系统进行了一些分析之后,我们确定 1 字节的结构对齐是不必要的,并且不会对系统产生任何不利影响。我需要摆脱 1 字节的包装。

我知道我可以快速查找/替换所有文件,然后将它们删除。这是一个好的解决方案;如果这是唯一的方法,我很乐意这样做。但是,如果我可以避免签入涉及对数百个源文件的更改以及可能与之相关的所有冲突的修订,那么这将是可取的。

有没有办法让 Microsoft 编译器忽略 #pragma 包?

4

1 回答 1

3

据我所知,使用 MSVC 时无法禁用 #pragmas。

我可能会用一种非常适合文本处理的语言编写脚本(我可能会使用 Ruby,但 Python、Perl、sed 应该都可以完成这项工作),然后简单地使用它来注释或删除 #编译指示包行。这应该相对容易,因为#pragmas 将是给定代码行上的唯一语句,并且脚本语言通常包含遍历一组目录的功能。

于 2012-07-26T23:44:07.703 回答