在循环中使用定义(c编码)

时间:2015-05-22 08:47:45

标签: c arrays for-loop macros

我有像

这样的定义
#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
}

2 个答案:

答案 0 :(得分:1)

如果你改变了

#define COLUMN3  'a'
#define COLUMN4  'b'

并使用

int col[4]={COLUMN1, COLUMN2, COLUMN3, COLUMN4};
for (int var = 0; var < 4; ++var) 
{
    if(col[var])
    {
       .... ; // var //do something
    } 
}

你应该语法好。

答案 1 :(得分:0)

您不能这样做,因为define(宏)值被预处理器替换,这是在编译器构建代码之前完成的。

您必须使用switchif语句对else进行检查。