我正在使用通用缓冲区 .c/.h 文件。我想创建一个限定为 volatile 以用作 com 缓冲区的实例。
下面的代码说明了问题,限定符丢失了??将缓冲区地址传递给成员函数时。
代码段使用 'const' 限定符作为示例,我假设 'volatile' 的行为方式相同。使用 Rowley ARM GCC 编译器。
typedef struct buff_t {
char buffchar;
int index;
}buff;
void buff_init( buff *thisbuff ) {
thisbuff->buffchar = 'x';
thisbuff->index = 0;
}
int main(void)
{
buff memBuffer;
buff const UARTBuffer;
buff *buff_ptr;
buff_ptr = &memBuffer;
buff_init( buff_ptr ); /* struct elements initialized as expected */
// UARTBuffer.buffchar = 'y'; /* this caught by compiler as error to read-only object */
buff_ptr = &UARTBuffer; /* compile warning: assignment discards 'const' qualifier from pointer target type */
buff_init( buff_ptr ); /* UARTBuffer elements also initialized, expected const??? */
}