1

私は文字通り何百ものC++ソースファイルを多くのプロジェクトで使用しています。それらはかなり前に書かれ、それらはすべてパッキングプラグマに包まれています:

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

x64への移植を担当しています。行う必要のある多くの変更の中で、1つは、WindowsAPI呼び出し用の16バイトに整列されたスタックの要件です。システムを分析した結果、1バイトの構造アラインメントは不要であり、システムに悪影響を及ぼさないと判断しました。1バイトのパッキングを取り除く必要があります。

私はすべてのファイルをすばやく検索/置換して、それらを取り除くことができることを知っています。これはOKの解決策です。それが唯一の方法であるならば、私はこれをすることを完全にうれしく思います。ただし、文字通り何百ものソースファイルへの変更を含むリビジョンとそれに伴うすべての競合をチェックインする必要がない場合は、それが望ましいでしょう。

Microsoftコンパイラに#pragmaパックを無視させる方法はありますか?

4

1 に答える 1

3

私の知る限り、MSVCを使用するときに#pragmasを無効にする方法はありません。

私がおそらく行うことは、テキスト処理に適した言語でスクリプトを記述し(おそらく、Rubyを使用しますが、Python、Perl、sedがすべて機能するはずです)、それを使用してコメントアウトするか、#を削除します。プラグマパックライン。#pragmasは特定のコード行の唯一のステートメントであり、スクリプト言語には通常、一連のディレクトリを反復処理する機能が含まれているため、これは比較的簡単です。

于 2012-07-26T23:44:07.703 に答える