用#define来定义函数出错,请高手解答!

来源:百度知道 编辑:UC知道 时间:2024/07/06 16:18:26
在vs6.0中,我写了这样一小段代码,老报错,为什么。程序目的是利用函数指针数组来调用函数。
#include <iostream>
using namespace std;
#define F(N) void N(){cout<<"this is" #N "diaoyong"<<endl;}
int main()
{
F(a);
F(b);
F(c);
void (*p[])()={a,b,c};
for(int i=0;i<3;i++)
(*p[i])();
}
错误提示:error C2601: 'a' : local function definitions are illegal

#include <iostream>
using namespace std;
#define F(N) void N(){cout<<"this is" #N "diaoyong"<<endl;}
F(a);
F(b);
F(c);
int main()
{
void (*p[])()={a,b,c};
for(int i=0;i<3;i++)
(*p[i])();
return 0;
}

函数定义放在main外面。
最后加上 return 0;不要有Warning.

#include <iostream>
using namespace std;
#define F(N) void N(){cout<<"this is "#N" diaoyong"<<endl;}

F(a)
F(b)
F(c)
int main()
{
void (*p[])()={a,b,c};
for(int i=0;i<3;i++)
(*p[i])();
return 0;
}
你的函数是申明和定义一起的,所以不能放在main里面,另外函数定义不用再加;号了,不然F(a);就变成:
void a()
{
cout<<"this is a diaoyong"<<endl;
};
分号多余的