在循环中使用定义(c 编码)
use definitions in loop (c coding)
我有这样的定义
#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
}
您不能这样做,因为 define
(宏)值由预处理器替换,这是在编译器构建您的代码之前完成的。
您必须使用 if
和 else
语句在 switch
中进行检查。
如果你改变
#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
}
}
你应该语法没问题。
我有这样的定义
#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
}
您不能这样做,因为 define
(宏)值由预处理器替换,这是在编译器构建您的代码之前完成的。
您必须使用 if
和 else
语句在 switch
中进行检查。
如果你改变
#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
}
}
你应该语法没问题。