缺少未初始化的'警告

时间:2014-05-05 14:00:21

标签: c gcc gcc-warning

以下是示例代码:

#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

我应该使用什么选项来发出警告?

2 个答案:

答案 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