【发布时间】:2023-03-11 18:07:01
【问题描述】:
我的代码有问题,我无法解决....
报错的代码sn-p:
static FILE *debugOut = stderr;
static FILE *infoOut = stdout;
gcc 返回的错误是:
initializer element is not constant
【问题讨论】:
-
您需要发布更多代码,因为这还不够,gcc 报告的内容还包括这些吗?还可以尝试在函数中分配它们(我认为您现在正在将其作为全局变量?)
-
您正在初始化一个静态变量,这意味着编译器需要在编译时知道该值是什么。您正在尝试分配一个在编译时编译器不知道但在运行时知道的值 - 这就是它导致错误的原因。
-
这不是重复的 - 它比链接的问题更具体 - 一个好的答案会详细说明为什么 stderr/stdout 在某些 c 库中是常量表达式 - 但不是全部 - 以及 C 标准不要求它们是常量表达式。然后添加上述代码的一些可移植变体。
标签: c