[問題] #define的命名方式可否用陣列或其他方法?

看板C_and_CPP (C/C++)作者 (打籃球ㄟ)時間10年前 (2016/03/07 11:07), 10年前編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
開發平台(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

03/07 12:16, , 1F
可以考慮不要用define, 改成function pointer和arra
03/07 12:16, 1F

03/07 12:16, , 2F
y結合使用
03/07 12:16, 2F

03/08 01:37, , 3F
BBB[i] 是 runtime 而 define 是 compile-time
03/08 01:37, 3F

03/08 01:39, , 4F
用一個 compile-time 決定的靜態陣列可以符合你的需求
03/08 01:39, 4F

03/10 12:30, , 5F
謝謝!!
03/10 12:30, 5F
文章代碼(AID): #1MtF24hb (C_and_CPP)
文章代碼(AID): #1MtF24hb (C_and_CPP)