这样定义:
#define def(x)      m##x
那么如果用:
int def(1); //就被扩展为int m1;

解决方案 »

  1.   

    不过这样做的话只是简单的把x作为字符串连接起来,不能设x为变量名。比如:
    int def(x1)  --->    int mx1;
    如果在x为某个变量时仍有效果,宏应该不行了。不知道你的具体意思,一般情况数组可以满足需要吧,为什么要用这样复杂的机制呢? 
      

  2.   

    看来这位同志可能是想这样用:
    for(int i=0;i<n;i++)
    def(i);
    用变量生成一系列变量。用数组不行吗?##是不能满足这种需要的。
      

  3.   

    还不如将其定义为LPVOID类型先...
      

  4.   

    这位同志,你整形i的1、2、3.....是在你的二进制代码中。而你设置的变量名m1,m2,m3....是在你的源程序中的。按你的意思是要把已经编译好的二进制代码用来定义源程序的变量名,好像不太现实吧。用数组不行吗。
      

  5.   

    感谢叉叉等楼上的兄弟,我的目的是用该宏,指代程序已存在的变量或宏,
    如:
        资源宏       IDC_EDIT_BASE1、IDC_EDIT_BASE2、IDC_EDIT_BASE3......
                   (因该类宏数量多,用symbol value 不易程序移植,用数组工作量大,维护困难)    数据库字段名  m_pSet->m_m1、m_pSet->m_m2......
                   (该类同样数量多,又要动态定义,同样需要动态生成)另问一相关问题c++有无宏或其他办法,使字符串,动态生成c++ 语句执行。以上问题在java、foxpro利用宏,是很容易解决,难道号称最好的编程语言的c++,却无法解决。如蒙指教,不胜感激。
      

  6.   

    请问
    #define SPXSendData(pSocket, a) if (!pSocket##.SendToServer(a)) throw((int)0)##代表啥