错误28:表达式必须具有常量值

时间:2014-07-02 09:53:56

标签: c++ struct const typedef keil

我在keil uvision5中有一段c ++代码,它正在获得错误28:表达式必须具有常量值。我想弄清楚如何解决它。

这是它正在发生的行(函数内部):

osPoolDef_t pool_def = { queue_def->queue_sz,  queue_def->item_sz};

它不喜欢变量queue_sz或item_sz。

这是osPoolDef_t的定义:

typedef const struct os_pool_def  {
  uint32_t                 pool_sz;    /*  number of items (elements) in the pool */
  uint32_t                 item_sz;    /*  size of an item */
  void                     *pool;      /*  pointer to memory for pool */
} osPoolDef_t;

和queue_def是一个指向osMailQDef_t的指针,如下所示:

typedef const struct os_mailQ_def  {
  uint32_t                queue_sz;    /*  number of elements in the queue */
  uint32_t                 item_sz;    /*  size of an item */
  struct os_mailQ_cb **cb;
} osMailQDef_t;

希望这是足够的信息。

似乎问题是我不再使用c99,但是当我使用c99时,代码对该文件工作正常。有没有办法强制只使用c99编译该文件?

1 个答案:

答案 0 :(得分:0)

您可以强制armcc编译器将C99与--c99选项一起使用。