20

nvcc具体的には、特定のコンパイラ警告を無効にしたい

警告: NULL 参照は許可されていません

私が取り組んでいるコードはNULL参照を使用しており、SFINAE の一部であるため、避けることはできません。

理想的な解決策は#pragma、警告を無効にしたいソース ファイルだけにすることですが、問題の警告のみを無効にするコンパイラ フラグが存在する場合は、コンパイラ フラグでも問題ありません。

4

6 に答える 6

28

実際には、NVCC を使用してデバイスの特定の警告を無効にすることができます。それを行う方法を理解するのに何年もかかりました。

このページ-Xcudafeにリストされているトークンと組み合わせてフラグを使用する必要があります。たとえば、「制御式は定数です」という警告を無効にするには、次を NVCC に渡します。

-Xcudafe "--diag_suppress=boolean_controlling_expr_is_constant"

その他の警告については、上記のリンクを参照してください。

于 2013-06-13T19:59:40.153 に答える
9

user2333829 の回答を補強するには: 警告名がわかっている場合は、次のように無効にできます。

-Xcudafe "--diag_suppress=boolean_controlling_expr_is_constant"

名前がわからない場合は、次のようにコンパイルして警告番号を取得します。

-Xcudafe --display_error_number

そして、次のようにします。

-Xcudafe --diag_suppress=<warning_number>

(注: 両方のオプションを同時に使用しても機能しないようです。)

于 2019-01-11T08:39:10.320 に答える