【发布时间】:2015-05-22 08:47:45
【问题描述】:
我有类似的定义
#define COLUMN1 1
#define COLUMN2 2
#define COLUMN3 a
#define COLUMN4 b
我想循环使用它们
for (int var = 0; var < 3; ++var) {
if(COLUMNvar) .... ; // var
}
我可以这样做吗:
int col[4]={COLUMN1, COLUMN2, COLUMN3, COLUMN4};
for (int var = 0; var < 3; ++var) {
if(col(var)) .... ; // var
}
【问题讨论】:
-
我必须使用 definiton 来考虑内存 :)
-
你的意思是
#define COLUMN3 'a'? -
@SaimGokkoyun:这不是它的工作方式。它不会为您节省任何费用。您保存在 .bss 或 .data 段中的内容只会添加到 .text 段中(值必须放在 somewhere)。但是,如果您使用
int const xxx[]数组,它将在 .rodata 或 .text 段中结束,并且也不会消耗 RAM。 -
实际上 COLUMNS 正在引用端口定义。它们是 32 位值。