Как объявить массив C летучей структуры - PullRequest
0 голосов
/ 19 февраля 2019

Я определил структуру, и я не хочу помещать volatile в структуру, потому что другим экземплярам она может не понадобиться (например, кеширование в ОЗУ).Теперь мне нужно, чтобы конкретный массив этой структуры был volatile.

typedef struct{
    uint8_t rxPacket[FIFO_SIZE];
    uint8_t length;
    int8_t rssi;
    uint8_t lqi;
}rawRx_t;

Правильный ли это способ сделать каждый (struct) элемент массива volatile?

static volatile rawRx_t rawRxBuffer[NB_MAX_RX_FRAME];

1 Ответ

0 голосов
/ 19 февраля 2019

Да.

Сжатие и переключение типа на что-то cdecl.org может проанализировать, мы получаем:

volatile int rawRxBuffer[];

и соответствующий вывод:

declare rawRxBuffer as array of volatile int

Дело в том, что это «массив энергозависимых», то есть каждый элемент массива энергозависим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...