首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化类型定义结构的类型定义字段

初始化类型定义结构的类型定义字段
EN

Stack Overflow用户
提问于 2018-04-09 09:34:53
回答 2查看 36关注 0票数 0
代码语言:javascript
复制
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的。请告诉我怎么修。谢谢!

代码语言:javascript
复制
typedef struct {
.
.
.
} ControlSignals;


typedef struct {
ControlSignals control_signals;
.
.
} MachineState;
EN

回答 2

Stack Overflow用户

发布于 2018-04-09 09:39:39

当你在文件作用域(即函数之外)初始化一个变量时,正如错误消息所述,初始化器必须是一个编译时间常数。编译时间常量(不严格地说)指的是数值常量、字符串常量或这些常量的组合。而是将其设置为另一个变量的值。

您需要使用常量值来初始化变量,或者稍后在程序中通过赋值来设置它。

票数 0
EN

Stack Overflow用户

发布于 2018-04-09 09:42:29

除非该代码被嵌入到一些不寻常的东西中,否则问题就不是访问字段。

换句话说:在C中,在函数外部初始化变量,就像你的例子一样,需要一个“常量表达式”:编译器可以确定它的值,这样它就可以告诉你应该将什么预加载到内存中。您会收到错误消息,因为您没有提供常量表达式。

但这不是这里正在发生的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49724452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档