汎用バッファ .c/.h ファイルを使用しています。com バッファーとして使用するために、volatile として修飾されたインスタンスを作成したいと考えています。
次のコードは問題を示しています。修飾子が失われていますか?? バッファアドレスをメンバー関数に渡すとき。
コード セグメントでは、「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??? */
}