首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义列表: variables1,variables2,variablesN

如何定义列表: variables1,variables2,variablesN
EN

Stack Overflow用户
提问于 2014-11-17 20:31:49
回答 2查看 53关注 0票数 0

我想做以下几件事:

代码语言:javascript
复制
#define ConfigureCAN(index,value) CAN.MBOX##index=value
 for (i=0;i<15;i++) ConfigureCAN (i,0);

这不管用。那么有没有别的办法呢:

代码语言:javascript
复制
 ConfigureCAN  (0,0);
 ConfigureCAN  (1,0);

..。

谢谢。

编辑: Wil结构的索引是否正确?#define ConfigureCAN (index,value) {struct MBOX *Mailbox;Mailbox = &can.MBOX0 +(index* sizeof(struct MBOX));MBOX=value;}

EN

回答 2

Stack Overflow用户

发布于 2014-11-17 20:47:31

不,您不能使用for循环索引变量(它只在运行时获得它的值)来构建编译时符号名称。当程序运行时,即for循环执行时,符号名称不可用,因此没有任何意义。

你也许可以设置一个(指针)数组来使访问更容易循环,但是你需要初始化一个看起来很像的数组(但如果你的目标是获得更好的运行时性能)。

票数 2
EN

Stack Overflow用户

发布于 2014-11-17 20:52:41

在C中没有简单的方法可以做到这一点。

根据您使用的框架和硬件,可能有另一种方法来解决您的CAN结构:

  • 如果在循环中更经常需要MBOX###值,则可以在适当的位置创建一个具有指针的数组:

易失性int * MBOXPOINTERS[] ={ &CAN.MBOX0,&CAN.MBOX1,/*自己继续*/ };

(将volatile int替换为各自头文件中使用的任何内容)

  • 如果您有设备数据表,并且看到字段是以连续的方式出现的,那么您应该能够定义一个位于适当地址的数组。但这高度依赖于硬件。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26972804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档