Cảnh báo [...]: Hành vi không xác định: thứ tự của các truy cập không ổn định là undefined trong bản Tuyên Bố này x.cpp xxxLý do cơ bản cho hành vi không xác định này là gì?
Tại sao dòng này là hành vi không xác định?
case 2:
Vdda = 3.3 * (*VREFINT_CAL)/ADC_DR->DATA;
Trường hợp tờ khai/khởi tạo là:
volatile short const *VREFINT_CAL = (short *) 0x1FFFF7BA;
và
volatile STRUCT_ADC_DR *ADC_DR = (STRUCT_ADC_DR*) 0x40012440;
xác định bởi:
typedef struct
{
unsigned DATA : 16;
unsigned : 16;
} STRUCT_ADC_DR;
Có phải vì trình biên dịch là không chắc chắn về các yếu tố dễ bay hơi có thể hành động khác nhau theo thứ tự họ được truy cập? (Trường hợp gì)
Nhưng không nên đảm bảo rằng việc tính toán được thực hiện từ trái sang phải vì các toán tử có cùng mức độ ưu tiên?
Bạn có chắc bạn biết những gì 'volatile' không? Và tại sao có các địa chỉ mã hóa cứng trong mã của bạn? – deviantfan
Tôi nghĩ rằng điều này nên được lặp lại là "tại sao tiêu chuẩn đánh dấu rõ ràng điều này là hành vi không xác định/lý do cho nó ...", nếu không bạn sẽ chỉ nhận được "tiêu chuẩn nói như vậy" từ rất nhiều người. – OMGtechy
Thứ tự đánh giá của toán hạng không xác định. – molbdnilo