Ошибка 28: выражение должно иметь постоянное значение

У меня есть раздел кода C ++ в Keil Uvision5, который получает ошибку 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?

-2

Решение

Вы можете заставить компилятор armcc использовать C99 с опцией —c99.

0

Другие решения


По вопросам рекламы [email protected]