如果我有一个结构,其中某些成员是易失性的,但不是全部,而我将指向该结构的指针作为函数参数传递,则编译器会阻止对函数内的那些成员进行优化,还是我必须声明该指针一样易挥发?
typedef struct {
volatile uint16_t reg1;
volatile uint16_t reg2;
const uint32_t speed;
uint8_t error;
}uart;
void uartInitialize(uart *const hdlPtr);
//void uartInitialize(volatile uart *const hdlPtr); is this required?
答案 0 :(得分:0)
简短的回答:无需在hdlPtr上添加volatile。
长答案:除非可以以某种意外的方式更改hdlPtr,否则无需将其声明为易失性。鉴于它是函数的局部变量,因此只能通过uartInitialize进行更改。假设您已将其声明为“ const”,则uartInitialize本身无法对其进行更改。