8

複数のプラットフォームとコンパイラで動作する小さなコードを作成しようとしています。私はアサーションを使用しており、そのほとんどはオフにできますが、PGI のOpenMP サポートpgicppを使用してコンパイルすると、オプションが自動的に使用されます。コード内のどこでも「throw」ステートメントを使用すると、致命的なコンパイラ エラーが発生します。(「例外処理のサポートが無効になっています」)-mp--no_exceptions

PGIdefineのステートメントを非表示にするためにテストできる d マクロはありますか? throw私は通常、gcc などを使用して作業しGCC_VERSIONます。これらのマクロを PGI で説明しているドキュメントが見つかりません。

4

3 に答える 3

12

Sourceforge のPre-defined C/C++ Compiler Macrosプロジェクトを見てください。

PGI のコンパイラには__PGIマクロがあります。

また、コンパイラのバージョン管理マクロを「正規化」する適切な方法については、libnuwen のcompiler.hh ヘッダーを参照してください。

于 2009-08-05T14:58:55.133 に答える
4

これを試して、コンパイラによって事前定義されているマクロを確認できます。

pgcc -dM

おそらく、使用できる適切なマクロが明らかになるでしょう。

于 2009-08-05T14:06:59.017 に答える
0

ブーストヘッダーを見ましたか?彼らが PGI をサポートしていると仮定すると、彼らはそれを検出する方法を見つけたでしょう。あなたはそれを使うことができます。のどこかで検索を開始しますboost/config

于 2009-08-05T14:53:19.260 に答える