有关宏和函数的调用问题
#define DF(N) void N()\
{\
cout < < "Function " #N " called... " < < endl;\
}
DF(a);
DF(b);
DF(c);
DF(d);
void (*FunctionTable[])()={a,b,c,d};
int main(void)
{
//...
while( 1 )
{
cout < < "Press a key from 'a ' to 'd ' "
"or 'q ' to quit " < < endl;
char c,cr;
cin.get(c);
cin.get(cr);
if( c== 'q ' )
{
break;
}
if( c < 'a ' || c> 'd ' )
{
continue;
}
(*FunctionTable[c- 'a '])();
}
}
这里是怎样通过指针函数调用那个宏的?
当我输入 'a '时,调试发现直接就调用DF(a)了,为什么 ?
[解决办法]
自己将宏展开看看代码如何
[解决办法]
DF(a);
展开为:
void a()
{
cout < < "Function " a " called... " < < endl;\
}
void (*FunctionTable[])()={a,b,c,d};就是函数数组,
所以输入a就是调用函数a()了。