看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 問題(Question): 都是在embedded system的code裡面看到的 1. 程式碼: http://codepad.org/UFsAKQ7r 想請教第8行的 *((volatile unsigned long *) 會使用#define應該就是像const一樣,不想讓值再變動了不是嗎? 請問這樣的寫法是什麼目的呢? 我在那份code上做第13,14行的事情,真的可以改掉TEST_1的值 但自己在Linux上build code是會有問題的 請問這個語法的意思是什麼呢? 2. 程式碼: http://codepad.org/mUyMmPjd 想請教第7行的 __attribute__ ((section (".ddrtable"))) 請問加這段code的目的是什麼呢? 以上,麻煩大家給小弟指點一下迷津 感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.176.221.68
Feis:1. 就轉型阿. 一般不能用是記憶體位址是未知的 12/08 12:51
Feis:2. 這個應該 Google 就有了... 12/08 12:51
Feis:此外這裡的 TEST_1 的值是會變動的 12/08 12:53
Hyozero:謝謝! 12/08 22:34
MetalChao:1. volatile 讓 compiler 不要針對它的存取做最佳化 12/09 10:58
MetalChao:例如連續寫兩行 TEST_1=2; TEST1=3; 如果沒有 volatile 12/09 11:01
MetalChao:compiler會認為前面那個TEST_1=2是多餘的而不編譯進去 12/09 11:03
MetalChao:但這可能是個硬體暫存器,必須要先寫2再寫3才能正確運作 12/09 11:04
MetalChao:加上 volatile, compiler 就會忠實地把這兩行編譯進去 12/09 11:05
MetalChao:(寫完才發現後面有人回答了) 12/09 11:06
MetalChao:前面有筆誤 TEST_1=2; TEST_1=3 (寫到同一個位址) 12/09 11:06
Hyozero:Thank you! 12/09 23:43