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

Error 28: Expression must have a constant value

本文关键字:有一个 常量 表达式 错误      更新时间:2023-10-16

我在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完成该文件的编译?

可以使用——C99选项强制armcc编译器使用C99。

相关文章: