Yoichi's diary
2010-08-25
_ [comp/c] warning
/* hoge.c */ #include <stdio.h> int main() { unsigned int i1 = 1; long i2 = 2; if (i1 - i2 < 0) { printf("true\n"); } else { printf("false\n"); } return 0; }
_ gcc の場合、-Wall に加えて -W を付けると警告が増える
% gcc -Wall hoge.c % gcc -Wall -W hoge.c hoge.c: In function `main': hoge.c:8: warning: comparison of unsigned expression < 0 is always false % gcc --version gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.えらい古いバージョンだった。
% gcc-4 --version gcc-4 (GCC) 4.3.2 20080827 (beta) 2 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. % gcc-4 -Wall hoge.c % gcc-4 -Wall -W hoge.c hoge.c: In function 'main': hoge.c:8: warning: comparison of unsigned expression < 0 is always falseこちらは古いと思わないところがあれかも。
_ cl の場合は /Wall を付けると警告が全て有効になる
C:\Users\yoichi\tmp>cl /W4 hoge.c Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. hoge.c Microsoft (R) Incremental Linker Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. /out:hoge.exe hoge.obj C:\Users\yoichi\tmp>cl /Wall hoge.c Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. hoge.c C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\stdio.h(381) : warning C4255: '_get_printf_count_output' : 関数プロトタイプがありません : '()' を '(void)' に変換します。 hoge.c(4) : warning C4255: 'main' : 関数プロトタイプがありません : '()' を '(void)' に変換します。 hoge.c(8) : warning C4296: '<' : 式は常に False です。 Microsoft (R) Incremental Linker Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. /out:hoge.exe hoge.obj
[ツッコミを入れる]