【发布时间】:2015-10-20 17:52:28
【问题描述】:
好的,这是我遇到的错误的精简变体。错误是我使用未初始化的变量初始化了一个数组。之前我使用函数来声明元素的数量,但是在清理之后我忘记了它并将所有声明都移到了函数的顶部。
我使用了标志-std=c99 -Wall -Wextra -pedantic -O,并且通常 gcc 在值未初始化之前会发出警告,但在这种特定情况下并没有。所以,我的问题是:
这是gcc 中的一个错误或f(&n) 是否有可能以某种奇怪的方式对数组大小进行后初始化?
#include <stdio.h>
void f(int * x) {
*x = 8;
}
int main(void) {
int n;
float a[n]; // Compiler should warn that n may contain garbage
a[7] = 3.1415;
printf("%f\n", a[7]);
f(&n); // Removing this causes the compiler warn as expected
return 0;
}
编辑:可能是this gcc bug?
【问题讨论】:
-
对我来说似乎是个错误
标签: c arrays gcc initialization compiler-warnings