サブルーチンがリターンしません。
この診断は、常に例外がスローされるか、あるいはコールスタックの上位のルーチンに制御を移動する longjmp の呼び出しにより、サブルーチンがリターンしないことを示します。exit、abort、FORTRAN STOP などのライブラリー・ルーチンを呼び出すルーチンもリターンしませんが、これらのルーチンに対しては出力されません。また、常に無限ループを実行するルーチンに対しても出力されません。無限ループは、別の診断としてレポートされます。
この方法でサブルーチンを終了しても問題ありませんが、常にこの方法で終了するサブルーチンは通常、コーディングスタイルに問題があります。このようなコーディングスタイルは、ユーザーに誤った印象を与えるため、奨励されません。サブルーチンが呼び出し元にリターンしてから例外をスローするか、longjmp を呼び出す方が分かりやすいことは明らかです。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
定義 |
サブルーチンの定義 |
#include <stdio.h> void never_returns() { abort(); // this routine never returns ... } int main (int argc, char **argv) { int j; j = 1; never_returns(); printf("%d\n",j); // so this is unreachable code return 0; }
© 2010 Intel Corporation. 無断での引用、転載を禁じます。