MachineState machine;
ControlSignals theControls = machine.control_signals; //Why is this giving an error?
Error: traceTemp.c:4:38: error: initializer element is not a compile-time constant. ControlSignals theControls = machine.control_signals;为什么这会给出一个错误?如何访问类型为def的字段,该字段也是类型定义?下面是我如何定义这两个typedefs的。请告诉我怎么修。谢谢!
typedef struct {
.
.
.
} ControlSignals;
typedef struct {
ControlSignals control_signals;
.
.
} MachineState;发布于 2018-04-09 09:39:39
当你在文件作用域(即函数之外)初始化一个变量时,正如错误消息所述,初始化器必须是一个编译时间常数。编译时间常量(不严格地说)指的是数值常量、字符串常量或这些常量的组合。而是将其设置为另一个变量的值。
您需要使用常量值来初始化变量,或者稍后在程序中通过赋值来设置它。
发布于 2018-04-09 09:42:29
除非该代码被嵌入到一些不寻常的东西中,否则问题就不是访问字段。
换句话说:在C中,在函数外部初始化变量,就像你的例子一样,需要一个“常量表达式”:编译器可以确定它的值,这样它就可以告诉你应该将什么预加载到内存中。您会收到错误消息,因为您没有提供常量表达式。
但这不是这里正在发生的事情。
https://stackoverflow.com/questions/49724452
复制相似问题