看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 嵌入式 - 瑞薩Renesas單晶片 C語言 問題(Question): 因為系統需求 必須使用SRAM去存取全域變數 一般來說 必須以下面方式定義: #define (變數名稱) (sram地址) #define AAA *(unsigned short*)(0x00007000) 但因程式使用上的需求 對應到不同的IO 需要多個重複的全域變數 希望可以將AAA改成陣列形式 如同宣告全域變數 int BBB[5]; 如果可以用類似的方式#define 其他的程式在存取全域變數時 可以直接以BBB[0] BBB[1] BBB[2] .... BBB[i] 的方式去存取sram 程式會簡化非常多.... 目前只能用很死板的方式 一直用switch case...(以下為舉例) switch(i) { case 0: AAA_0 = 123; break; case 1: AAA_1 = 1246; break; ... } 想請問大大有沒有類似的方法可以解決 或是能提供相關網頁 或關鍵字 QQ 非常感謝 歡迎回站內信!! 非常謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.23.178 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1457320068.A.AE5.html ※ 編輯: boyzone66 (61.219.23.178), 03/07/2016 11:09:20
asdrtyjkl925: 可以考慮不要用define, 改成function pointer和arra 03/07 12:16
asdrtyjkl925: y結合使用 03/07 12:16
linotwo: BBB[i] 是 runtime 而 define 是 compile-time 03/08 01:37
linotwo: 用一個 compile-time 決定的靜態陣列可以符合你的需求 03/08 01:39
boyzone66: 謝謝!! 03/10 12:30