インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
ここでは、コンパイラーのリマーク、警告、およびエラーについて説明します。インテル® C++ コンパイラーは、これらのメッセージとエラーを含むソース行を stderr に出力します。
リマークとは、C/C++ で一般的によく使用されるが実際には規約に違反している恐れのある用法を報告するメッセージです。リマークメッセージが表示されても、変換もリンクも停止されません。また、リマークメッセージが表示されても出力ファイルは影響を受けません。次に、リマークメッセージの代表例をいくつか示します。
関数が暗黙的に宣言されました。
型修飾子はこの宣言では無意味です。
制御式は定数です。
警告とは、C/C++ の規約には沿っているが、プログラミング言語の用法として問題のある部分を報告するメッセージです。デフォルトでは、コンパイラーは警告を表示します。適切なオプションを指定して、警告メッセージを抑止できます。警告メッセージが表示されても、変換もリンクも停止されません。また、警告メッセージが表示されても出力ファイルは影響を受けません。次に、警告メッセージの代表例をいくつか示します。
宣言で何も宣言されていません。
符号なし整数とゼロの比較は無意味です。
"==" を使用すべきところで "=" が使用されました。
追加の警告
次の Linux* および macOS* オプションは、追加の警告を表示します。
オプション |
結果 |
---|---|
-W[no-]missing-prototypes |
プロトタイプの省略の警告 |
-W[no-]missing-declarations | 宣言の省略の警告 |
-W[no-]unused-variable | 未使用の変数の警告 |
-W[no-]pointer-arith |
疑わしいポインター計算の警告 |
-W[no-]uninitialized |
初期化する前に変数を使用している場合の警告 |
-W[no-]deprecated |
推奨されていない機能に関する警告 |
-W[no-]abi |
生成されたコードが C++ ABI 規格に準拠していない場合の警告 |
-W[no-]unused-function |
宣言された関数が使用されていない場合の警告 |
-W[no-]unknown-pragmas |
不明な #pragma ディレクティブが使用された場合の警告 |
-W[no-]main |
メインの戻り型が予想と一致しない場合の警告 |
-W[no-]comment[s] |
/* */ コメントの中央に /* がある場合の警告 |
-W[no-]return-type |
関数でデフォルトの int 戻り型が使用されている場合に警告します。 |
C/C++ の用法が構文的または意味的に間違っていることを報告するメッセージです。該当する条件に当たればエラーメッセージは必ず表示されます。エラーメッセージが表示されると、そのエラーを含むモジュールのオブジェクト・コードが止まり、リンクの処理も止まりますが、他にエラーがないかどうかを調べる処理はそのまま続けられます。次に、エラーメッセージの代表例をいくつか示します。
括弧が閉じられていません。
式に算術型が含まれていなければなりません。
";" を指定してください。
一部のリマーク、警告、エラーには番号が付けられており、-diag-disable=list または /Qdiag-disable:list を使用して無効にできます。
例 |
---|
// Windows* /Qdiag-disable:117,230,450 |
// Linux* および macOS* -diag-disable=117,230,450 |
リマーク、警告、およびエラーを制御するには、次のコンパイラー・オプションを使用します (注: '-' プリフィクスのオプションは Linux* および macOS* で、'/' プリフィクスのオプションは Windows* でサポートされています。)。
オプション |
結果 |
---|---|
-w、/W0 |
エラー診断を有効にし、警告診断を無効にします。 |
-w1、/W1、/W2 |
警告およびエラー診断を有効にします。 |
-w2 |
詳細な警告およびエラー診断を有効にします。 |
-w3、/W3 |
リマーク、警告、およびエラー診断を有効にします。追加の警告は、レベル 2 の警告以上でも有効になります。 |
/W4, /Wall |
レベル 3 のすべての警告に加えて、ほとんどの場合に無視できる警告とリマークを有効にします。 |
/W5 |
すべてのリマーク、警告、およびエラー診断を有効にします。この設定は、最も多くの診断メッセージを出力します。 |
-Wremarks |
リマークとコメントを表示します。 |
-Wbrief、/WL |
1 行の簡単な診断を表示します。 |
-Wcheck |
より詳しい診断を有効にします。 |
-Werror-all |
すべての警告とリマークをエラーに変更します。 |
-Werror、/WX |
すべての警告をエラーに変更します。 |
/Wp64 |
64 ビットの移植に関する診断結果を出力します。 |
[Q]diag コンパイラー・オプションを使用して、診断情報の表示を制御することもできます。このコンパイラー・オプションは、複数の引数や値を受け付けるため、表示される診断メッセージおよびレポートを幅広く制御することができます。
最も一般的なものは以下のとおりです。
オプション |
結果 |
---|---|
[Q]diag-enable<:|=>list |
診断メッセージまたはメッセージのグループを有効にします。 |
[Q]diag-disable<:|=>list |
診断メッセージまたはメッセージのグループを無効にします。 |
[Q]diag-warning<:|=>list |
診断を警告に変更するようにコンパイラーに指示します。 |
[Q]diag-error<:|=>list |
診断をエラーに変更するようにコンパイラーに指示します。 |
[Q]diag-remark<:|=>list |
診断をリマーク (コメント) に変更するようにコンパイラーに指示します。 |
list 項目は、特定の診断 ID、warn、remark、error のいずれかのキーワード、または特定のグループを指定するキーワード (par、vec、driver、thread、port-linux (Windows* システムで利用可能)、port-win (Linux* および macOS* システムで利用可能)、openmp) です。詳細は、「[Q]diag」 を参照してください。
その他の診断関連オプションには以下があります。
オプション |
結果 |
---|---|
[Q]diag-dump |
有効なすべての診断メッセージを出力して、コンパイルを停止するようにコンパイラーに指示します。 |
[Q]diag-file[<:|=>file] |
診断結果をファイルに出力します。 |
[Q]diag-file-append[<:|=>file] |
診断結果をファイルに追加します。 |
[Q]diag-error-limit<:|=>n | コンパイルを中断するまでに表示するエラー数を指定します。 |