作者boyzone66 (打籃球ㄟ)
看板C_and_CPP
標題[問題] #define的命名方式可否用陣列或其他方法?
時間Mon Mar 7 11:07:45 2016
開發平台(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