以下是示例代码:
#include <stdio.h>
int main() {
int n = 5;
float v[n];
float sum;
int i;
for(i = 0; i < n; i++) {
v[i] = i + 1;
printf("v[%d]=%f\n", i, v[i]);
}
for(i = 0; i < n; i++) {
sum += v[i]; //uninitialized using
}
printf("sum=%f\n", sum);
return 0;
}
gcc在没有任何未初始化变量警告的情况下编译它。
我正在使用gcc 4.6.3以及以下选项:
gcc -Wall main.c -o main
我应该使用什么选项来发出警告?
答案 0 :(得分:5)
使用-O(优化)选项;值跟踪仅在优化代码上执行。
$ gcc -Wall -O x.c
x.c: In function ‘main’:
x.c:15: warning: ‘sum’ is used uninitialized in this function
答案 1 :(得分:1)
除了@Jens的回答,如果您使用-Wall -Wextra -pedantic -O
进行编译,您会看到更多警告:
gcc -Wall -Wextra -pedantic -O -o main main.c
main.c: In function 'main':
main.c:5: warning: ISO C90 forbids variable-size array 'v'
main.c:15:20: warning: C++ style comments are not allowed in ISO C90
main.c:15:20: warning: (this will be reported only once per input file)
main.c:15: warning: 'sum' is used uninitialized in this function