Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement

Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement EW targets: All EW component: C/C++ compiler Keywords: C code, keywords, SFR, UART Last update: January 14, 2009 Background The warning [Pa082] is issued if 2 (or more) of the variables in a C-statment are volatile. The message text “…order of volatile accesses is undefined…” is the central information, i.e. the compiler (following the ANSII standard) can access the variables in an order that is not defined. Is this a problem , or not… …well that depends on your application. Volatile is (typically) used for variables that are accessed from several threads in the application, and for Special Function Register that are the connection in/out of the chip. So you must study the volatile variables that are present in this C-statement and from the usage of these volatile variables decide if you must make a change or not. How to change The change is to break up the C-statement, so that each new C-statement holds only one access to a volatile variable. In this small example the variables internalChannelSelect and ADC are volatile. If so the following C-source will issue the “Warning[Pa082]”. intAnalogSample[internalChannelSelect] = ADC[internalChannelSelect] ; Then the following change will make the C-source predictable. i = internalChannelSelect; k = ADC; intAnalogSample = k;

发表评论

电子邮件地址不会被公开。 必填项已用*标注