读书人

关于#define后头#的使用

发布时间: 2013-01-19 11:41:36 作者: rapoo

关于#define后面#的使用


class BaseAbc
{
public:
BaseAbc(){std::cout<<"constructor"<<std::endl;}
};
void Base(const string &x,BaseAbc *b){}
#define ADD_PACK(name) Base(#name, new name##Abc);

ADD_PACK(Base);
int main()
{
system("pause");
return 0;
}

报错说'Base'被重定义了,之前的定义是函数。
这。。。。

[解决办法]
ADD_PACK(Base)移到main函数里,还有啊
#define ADD_PACK(name) Base(#name, new name##Abc);
这个结尾的分号还是不要吧!

int main()
{
ADD_PACK(Base);
system("pause");
return 0;
}

[解决办法]
因为原来你的是函数调用,但是执行的时候不会走到那,

后面的是函数声明

读书人网 >C语言

热点推荐