【发布时间】:2016-06-06 09:25:30
【问题描述】:
我的 C 代码如下:
[Linux:/si/usr/hrl]vi test.c
#include <stdio.h>
FILE * hw = stdout;
int main(void)
{
return 0;
}
当我在 SUSE 上编译时,它会出现这样的错误:
[Linux:/si/usr/hrl]cc test.c -o test
test.c:3: error: initializer element is not constant
我查看了头文件stdio.h,发现stdout 似乎被定义为一个常量。那么为什么会产生错误呢?顺便说一下,我在 AIX 上编译了相同的代码,它的结果是成功的。
【问题讨论】:
-
哼。
stdout在您的 C 标准库实现中是如何定义的?它是什么类型的? -
我看起来没那么小心。也许是那个
extern struct _IO_FILE *stdout; /* Standard output stream. */。顺便说一下,我用c++编译,编译成功了。 -
@hrl 这个问题与一些人可能会说你的问题是它的副本高度相关:stackoverflow.com/questions/3025050/…