关于#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;
}
[解决办法]
因为原来你的是函数调用,但是执行的时候不会走到那,
后面的是函数声明