C 如何定义变量列表:variables1、variables2、variablesN
我想做以下工作:C 如何定义变量列表:variables1、variables2、variablesN,c,variables,C,Variables,我想做以下工作: #define ConfigureCAN(index,value) CAN.MBOX##index=value for (i=0;i<15;i++) ConfigureCAN (i,0); 谢谢 编辑:这项工作或更好的是索引的stuct正确吗? #定义ConfigureCAN(index,value){struct MBOX*Mailbox;Mailbox=&can.MBOX0+(index*sizeof(struct MBOX));MBOX=value;}不,不能
#define ConfigureCAN(index,value) CAN.MBOX##index=value
for (i=0;i<15;i++) ConfigureCAN (i,0);
谢谢
编辑:这项工作或更好的是索引的stuct正确吗?
#定义ConfigureCAN(index,value){struct MBOX*Mailbox;Mailbox=&can.MBOX0+(index*sizeof(struct MBOX));MBOX=value;}不,不能使用
for
循环索引变量(仅在运行时获取其值)来构建这样的编译时符号名。程序运行时,即执行for
循环时,符号名称不可用,因此没有任何意义
您可能可以设置一个(指针)数组,以使访问更容易循环,但随后您需要初始化数组,该数组将具有相似的外观(但如果这是您的目标的话,可以实现更好的运行时性能)。在C中没有简单的方法可以做到这一点 根据您使用的框架和硬件,可能有另一种方法来处理CAN结构:
- 如果需要在循环中更频繁地使用
值,可以在适当的位置创建带有指针的数组: volatile int*MBOXPOINTERS[]={&CAN.MBOX0,&CAN.MBOX1,/*自己继续*/} (将MBOX####
替换为相应头文件中使用的任何内容)volatile int
- 如果您有设备数据表,并且您看到字段是连续的,那么您可以定义位于适当地址的数组。但这高度依赖于硬件
这不起作用
这意味着什么?BOOST\u PP\u REPEAT而不是for loop
ConfigureCAN (0,0);
ConfigureCAN (1,0);