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

关于#define后头#的使用

2013-01-19 
关于#define后面#的使用class BaseAbc{public:BaseAbc(){std::coutconstructorstd::endl}}void Ba

关于#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;
}

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

后面的是函数声明

热点排行