Visual Studio 2010可以忽略特定的pragma吗?

时间:2012-07-26 23:31:12

标签: visual-studio-2010 alignment pragma

我有许多项目使用的数百个C ++源文件。他们写了很长一段时间,他们都包装在包装片中:

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

我可能会做的是用一种非常适合文本处理的语言编写脚本(我可能会使用Ruby,但是Python,Perl,sed应该都可以完成这项工作)并且只是用它来注释掉或者删除#pragma包行。这应该比较容易,因为#pragmas将成为给定代码行的唯一语句,而脚本语言通常包含迭代一组目录的功能。