Я столкнулся с предупреждением «неопределенное поведение» с компилятором IAR для RL78 (v. 1.40.6) со следующим кодом:
static volatile int x[2] = {1, 2};
int test(){
return x[0]+x[1];
}
Предупреждение [Pa082]: неопределенное поведение:порядок изменяемого доступа не определен в этом выражении C: \ sandbox \ test.c 32
Компилятор Техническая заметка предоставляет объяснение, сводящееся к двум побочным эффектам (изменяемый доступ)) быть неупорядоченным.
Тем не менее, я вижу, что приведенный выше код не является проблемой для более новых компиляторов, таких как GCC 8. Может ли кто-нибудь указать мне на изменение в стандарте, которое делает доступ к двум изменчивым переменным в одном выражении законным