What problem arrise when we have union + volatile?
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
Alexandre De Barros
2015 年 4 月 3 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Options at Command Line Only についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!