clang でループ式が実行されない場合に警告を出すには、-Wunreachable-code-loop-increment
オプションを指定します。
sample.cpp
int main(void)
{
for (int i = 0; i < 10; ++i)
{
break;
}
return 0;
}
この例では初回のループが終了する前に break
文が実行されるため、警告が表示されます。
$ # M1 Mac (Ventura) + Apple clang 14.0.0
$ clang -Wunreachable-code-loop-increment sample.cpp
sample.cpp:3:29: warning: loop will run at most once (loop increment never executed) [-Wunreachable-code-loop-increment]
for (int i = 0; i < 10; ++i)
^~~
1 warning generated.
警告を抑制する
逆に、警告を抑制したい場合は -Wno-unreachable-code-loop-increment
オプションを指定します。 このオプションを指定することで、既に指定されたオプションを打ち消すことができます。
$ # M1 Mac (Ventura) + Apple clang 14.0.0
$ clang -Wunreachable-code-loop-increment -Wno-unreachable-code-loop-increment sample.cpp
$
参考資料
- Diagnostic flags in Clang — Clang documentation
https://clang.llvm.org/docs/DiagnosticsReference.html#wunreachable-code-loop-increment