我在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编译该文件?
答案 0 :(得分:0)
您可以强制armcc编译器将C99与--c99选项一起使用。