[问题] #define的命名方式可否用阵列或其他方法?

楼主: boyzone66 (打篮球ㄟ)   2016-03-07 11:07:45
开发平台(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 非常感谢
欢迎回站内信!!
非常谢谢
作者: asdrtyjkl925 (阿斯拉)   2016-03-07 12:16:00
可以考虑不要用define, 改成function pointer和array结合使用
作者: linotwo (._.)   2016-03-08 01:37:00
BBB[i] 是 runtime 而 define 是 compile-time用一个 compile-time 决定的静态阵列可以符合你的需求
楼主: boyzone66 (打篮球ㄟ)   2016-03-10 12:30:00
谢谢!!

Links booklink

Contact Us: admin [ a t ] ucptt.com