[問題] valotile問題一問
大家好,小弟對於valotile修飾變數有不太了解的地方
關於volatile小弟的想法是為了不讓compiler讓變數最佳化
(即去register撈資料 速度比較快) 而是直接在Memory存取值,
我看過一個例子是說可以經由volatile去直接存取memory裡面的值
ex:
unsigned long Memory = 0x8F8F8F8F (目標要取值的記憶體位置)
int Value = 0;
Value = *((volatile unsigned long *) Memory);
諸如此類
我的疑問是在這個例子中,unsigned long* 的用意到底是什麼呢??
麻煩大家解惑一下~謝謝
--------------------------------------------------------------
謝謝大家的講解,這是我剛剛寫的例子
unsigned long Memory = 0x22ff70;
unsigned long Value = 0xFFFFFFFF;
*((volatile unsigned char *) Memory) = Value;
Value = *((volatile unsigned long *) Memory);
printf("Value:%x\n",Value);
OUTPUT為 0xFFFFFFFF
我的問題是 以寫值來說highlight那行轉型其實用long or char
都沒差 這又是為什麼呢??
再次謝謝大家解惑╭(─╴╴─)╮ ▃▇
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.212.41
→
01/05 23:55, , 1F
01/05 23:55, 1F
推
01/05 23:56, , 2F
01/05 23:56, 2F
→
01/05 23:57, , 3F
01/05 23:57, 3F
※ 編輯: cates 來自: 123.195.212.41 (01/06 00:05)
→
01/06 00:08, , 4F
01/06 00:08, 4F
→
01/06 00:11, , 5F
01/06 00:11, 5F
→
01/06 00:16, , 6F
01/06 00:16, 6F
→
01/06 00:17, , 7F
01/06 00:17, 7F
→
01/06 00:18, , 8F
01/06 00:18, 8F
→
01/06 00:20, , 9F
01/06 00:20, 9F
→
01/06 00:23, , 10F
01/06 00:23, 10F
→
01/06 00:23, , 11F
01/06 00:23, 11F
→
01/06 00:23, , 12F
01/06 00:23, 12F
→
01/06 00:24, , 13F
01/06 00:24, 13F
→
01/06 00:27, , 14F
01/06 00:27, 14F
→
01/06 00:28, , 15F
01/06 00:28, 15F
→
01/06 00:28, , 16F
01/06 00:28, 16F
※ 編輯: cates 來自: 123.195.212.41 (01/06 00:36)
→
01/06 00:38, , 17F
01/06 00:38, 17F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章