次のようなものを検出するために gcc で使用する適切な警告フラグを探しています。
#include <stdlib.h>
#include <stdio.h>
int main()
{
const size_t n = (size_t)-1;
for( unsigned int i = 0; i < n; ++i ) /* use `unsigned char` if you want */
{
printf( "%d\n", i );
}
return 0;
}
私は試した:
$ gcc -Wsign-conversion -Wconversion -pedantic -Wsign-compare -W -Wall -Wextra -std=c99 t.c
何が起こったのかというとunsigned int
、メモリ ブロック サイズを使用する既存のコードを変更したことです。大きなファイルでコードが失敗し始めます。そのため、残っている残りを見逃していないことを確認する必要があります。
編集:
発見したばかり-Wtype-limits
ですが、これもうまくいきません