【问题标题】:initializer element is not constant初始化元素不是常量
【发布时间】:2017-05-11 13:15:41
【问题描述】:

我已阅读有关此主题的其他答案,但它们对我没有帮助。 我声明了一个全局卡住:

    typedef stuck {
    ....
    } a;

在我初始化这个结构的动态数组之后:

    a * severalA= (a*)malloc (sizeof (a)*3);

编译后出现错误:“initialize element is not constant” on the malloc type(粗体)。 知道我在这里缺少什么吗? 我试图在初始化之前添加 const 但没有成功。

【问题讨论】:

  • 你永远不应该转换 malloc 的结果。并避免发布伪代码。
  • 看起来您对这个问题卡住了,不是吗? :D
  • 写入函数内部
  • 这很可能是因为您试图在函数之外执行代码,这在编程时是不允许的。虽然无法用给出的代码来判断。

标签: c


【解决方案1】:

在 C 语言中,具有静态存储持续时间的对象必须使用常量表达式或包含常量表达式的聚合初始化器进行初始化。

我的猜测是您正在尝试将多个 A 定义为全局变量 - 这是真的吗?

在这种情况下,malloc() 不是常量表达式,不能使用。

【讨论】:

    【解决方案2】:

    你拼错了结构

    你需要改变卡住结构

    【讨论】:

      猜你喜欢
      • 2015-07-21
      • 2012-04-10
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多