Ansi C如何动态调用一个CONSTANT
Ansi C how to dinamically call a CONSTANT
如何动态调用此处定义的正确常量:
#define MyCONSTANT_00 "STATICVALUE"
#define MyCONSTANT_01 "STATICVALUE1"
#define MyCONSTANT_02 "STATICVALUE3"
for (Index = 0; Index < record; Index++)
{
myfunction(MyCONSTANT_+Index);
}
这个return编译时出错:
Undefined identifier MyCONSTANT_
如果我用常量直接调用函数,它工作正常:
myfunction(MyCONSTANT_00);
你不能:
#define
和相应的替换由预处理器处理,而 for
循环(和 Index
迭代器)由编译器处理。
预处理器中没有循环机制。
我建议定义一个静态常量数组并在循环中迭代它:
const char* const MyCONSTANT[] = {"STATICVALUE", "STATICVALUE1", "STATICVALUE3" }
for (Index = 0; Index < record; Index++)
{
myfunction(MyCONSTANT[Index]);
}
如何动态调用此处定义的正确常量:
#define MyCONSTANT_00 "STATICVALUE"
#define MyCONSTANT_01 "STATICVALUE1"
#define MyCONSTANT_02 "STATICVALUE3"
for (Index = 0; Index < record; Index++)
{
myfunction(MyCONSTANT_+Index);
}
这个return编译时出错:
Undefined identifier MyCONSTANT_
如果我用常量直接调用函数,它工作正常:
myfunction(MyCONSTANT_00);
你不能:
#define
和相应的替换由预处理器处理,而 for
循环(和 Index
迭代器)由编译器处理。
预处理器中没有循环机制。
我建议定义一个静态常量数组并在循环中迭代它:
const char* const MyCONSTANT[] = {"STATICVALUE", "STATICVALUE1", "STATICVALUE3" }
for (Index = 0; Index < record; Index++)
{
myfunction(MyCONSTANT[Index]);
}