none
コンパイルオプションの/Zpについて RRS feed

  • 質問

  • お世話になっております。

    コンパイルオプション/Zpでパディング指定した場合、プログラム内で使用しているWindowsAPI用の構造体も指定された状態になるのでしょうか?

    その場合、プログラム内からその構造体を使用してWindowsAPIを呼び出しても問題ないのでしょうか?

    今、32Bit版のプログラムを64Bitに移行することを検討中なのですが、方針や方式等いろいろな観点で調査している段階です。

    ちょっと気になったので質問させていただきました。

    2019年12月3日 5:38

すべての返信

  • Windows APIに関しては/Zpの影響を受けないようパディングが個別に指定されています。

    ただし、Windows API以外、サードパーティライブラリなどは/Zpの考慮が漏れていて正しく動作しない場合もありますので、/Zpの仕様は慎重にした方がいいです。

    2019年12月3日 6:08
  • 返信遅くなり申し訳ありません。

    ズバッと回答ありがとうございます。

    /Zpやpragmaでのパディング操作に関して

    色々情報が出ていますが、自分なりに消化出来ていない状況でして...

    今後も色々ご質問することがあるかと思いますが

    そのときはよろしくお願いいたします。

    2019年12月4日 1:23
  • oossaammさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    佐祐理さんの意見に賛成します。 
    そして、[#pragma pack](https://docs.microsoft.com/ja-jp/cpp/preprocessor/pack?view=vs-2019
    を使用して、必要な構造のアライメントを明示的に設定することをお勧めします。

    どうぞよろしくお願いいたします。

    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年12月6日 7:54
    モデレータ