Re: [問題] volatile
※ 引述《cyu021 (taco)》之銘言:
: volatile是為了防止compiler在做最佳化的時候誤判情勢
: 而沒有去更新變數/位址。
: 總之你在debug的過程中如果發現某些變數/位址在任何情況下都
: 沒有被更新的話,可以試試看宣告變數的時候在前面加個volatile。
: ※ 引述《goo666 ()》之銘言:
: : unsigned rxbus_data;
: : rxbus_data = *(volatile unsigned *) 0x0E000010;
: : 請問宣告中帶volatile是什麼意思?
: : volatile在MSDN內可以找到嗎?
前輩您好,
小弟對於這個關鍵字感到非常的困惑....
始終找不出原因....
typedef struct MsgInfo
{
//volatile DWORD udp_rmcp;
volatile DWORD rx_data;
/*volatile*/ WORD tx_pilot;
/*volatile*/ WORD rx_pilot;
//volatile DWORD tx_data;
/*volatile*/ BYTE rx_ok;
}MsgInfo_t;
struct A
{
struct MsgInfo B;
}
main()
{
A->B.rx_data= (DWORD)array[0]<<24 |(DWORD)array[1]<<16
|(DWORD)array[2]<<8\
|(DWORD)array[3]);
}
若array[]為一會內容會變動的陣列
若恰好array[2],array[3]為0時, array[0], array[1]不為0時,
發現rx_data不會被更新......
不知道是volatile的運用誤解還是compiler的問題.....
真不知道要怎樣才能順利更新rx_data的值?
請各位前輩能不能給小弟一點建議該怎麼改這段程式 感激萬分!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.250.104
推
09/13 15:39, , 1F
09/13 15:39, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章