首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关宏和函数的调用有关问题

2012-03-24 
有关宏和函数的调用问题#defineDF(N)voidN()\{\cout Function#Ncalled... endl\}DF(a)DF(b)DF

有关宏和函数的调用问题
#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()了。

热点排行