专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++

求教一个关于宏的有关问题

发布时间:2011-06-28 21:43:35 文章来源:www.iduyao.cn 采编人员:星星草
求教一个关于宏的问题
比如:
#define   choose(n)   obj##n

调用load(choose(1));//相当于load(obj1);这个是我需要的

如果
int   i=0;
load(choose(i));//相当于load(obji);
有什么办法让这个i变成0吗?

------解决方案--------------------
楼主搞错概念了吧!
int i=0;该指令在程序编译后才能确定其值,而#define是预编译指令,要求在程序运行之前就得到其值。

------解决方案--------------------
不行吧,宏只是编译其的字符替换而已,而i的值却要到运行是才能确定
还是编个函数吧。
string choose(int i) //连接int的版本
{
char a[15];
itoa(i,a,10);
return string( "obj ")+a;
}
string choose(string s) //连接string的版本
{

return string( "obj ")+s;
}


cout < <choose(1) < <endl; //输出obj1
cout < <choose( "_dsa ") < <endl; //输出obj_dsa
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: