特定のg ++(具体的にはg ++-4.9)コンパイルオプションを特定のコード行または少なくとも対象となる関数にローカライズする簡単な方法を探しています。私は一般的に言えば興味がありますが、特に 、-fast-math
、-ffinite-math-only
および-fno-signed-zeros
オプションにも興味があります。
*.cpp ファイル レベルでのローカライズはmake
ユーティリティで可能だと思いますが、#pragma や __attribute__ などを使用して、コード自体でそれを有効にする方法があることを願っています。これは、外部ファイルへの依存を最小限に抑えるためだけでなく (つまり、不正のリスクmakefile
)、特定の FP 動作を関数内の特定の方程式にハイパーローカライズするためにも行いたいと考えています。
makefile
または、インライン ディレクティブによる FP 動作のローカライズが不可能な場合、プロジェクト ビルドで目的のコンパイラ ディレクティブが有効になっていない場合 (たとえば、紛失または不適切に変更された場合) 、少なくともコンパイル時エラーをトリガーするにはどうすればよいでしょうか。
このようなインライン最適化は、この場合は g++ のコンパイラ固有のものである可能性があると推測しますが、それは私が喜んで妥協します。