What problem arrise when we have union + volatile?
1 view (last 30 days)
Show older comments
Hello all,
I have the following .c file:
typedef unsigned char U8;
typedef unsigned int U16;
union twoBytesUnion{
U16 a;
};
union twoBytesUnion var_AA;
volatile union twoBytesUnion var_BB;
volatile U16 var_CC;
U16 var_temp;
void main (void)
{
var_CC = 0;
var_temp = var_CC; // Green check - NIV
var_AA.a = 0;
var_temp = var_AA.a; // Green check - NIV
var_BB.a = 0;
var_temp = var_BB.a; // Orange check - NIV -> *Why? What problem arrise when we have union + volatile?*
}
Polyspace settings: "Ignore default initialization of global variables" - checked Char: 8bits Int: 16bits Alignment: 8bits.
The Polyspace says that the orange check "Variable var_BB that is declared volatile may lead to imprecise check". Why?
0 Comments
Answers (1)
Alexandre De Barros
on 3 Apr 2015
Hi Cristina,
It is indeed an imprecision when a volatile union is used. It has been reported and should be fixed in a future version.
So for the moment you can simply ignore it.
Best regards,
Alexandre
0 Comments
See Also
Categories
Find more on Options at Command Line Only in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!