CString info[2][82];//数组已赋值
         CString sqltext = info[0][i]##[j];
简单点说,就是想循环获取数组名,然后获得数组里面的值
编译提示preprocessor command must start as first nonwhite space,查了半天没查到原因

解决方案 »

  1.   

    这个很不好办了,如果我定义#define AddStr(a,b) a##b来进行字符串的连接,好像只能获取到b的内容,a不知道跑哪里去了,字符串连接符应该是##没错啊。
      

  2.   

    ##符合只能在预编译时使用
    使用下列方式可满足你的要求
    使用结构数组
    typedef { name char[20],int a ;int b} _TEST;
    --定义数组
    _TEST a[2] = {{"名字A“,1,2},{"名字B",3,4}};if ( strcmp(a[0].name,"名字A") == 0  )
     {
          a[0].a = 2222;
     }
    elseif ( strcmp(a[1].name,"名字B") == 0 )
    {
    }
    else
    .....
      

  3.   

    ##符号只能用在预处理中
    可以用如下方法实现要求,用结构数组
    typedef struct { name char(20);int a;int b} _TEST;
    --定义
    _TEST test = {{"名字a",1,2},{"名字b",3,4}};if(strcmp(test[0].name,"名字a") == 0 )
    {
      test[0].a = 22222
    }
    else if ( strcmp(test[1].name,"名字b") == 0 
    {
    }
    else
     ....
      

  4.   

    谢谢楼上的了,如果可以用if else if的话,我也不会想到尝试用##来操作了,因为这个else if可以达到上百条,关键的是如果数组名产生变化维护起来过于麻烦,我想可能好点的方法还是通过#define来解决,就是目前还没解决
      

  5.   

    LS可能没看清楚我的意思,CStringArray解决不了问题的
      

  6.   

    CString info[2][82]你这就不应该搞这样的东西,思路上来讲,你这种做法就是不现实的,因为变量名编译后,已经不存在了,无法通过内存中的一个字符串与其对应上。
    我觉得你存数组的首地址更好,而不是存变量名。
      

  7.   

    你太逗了
    C++编程
    能不用宏就不应该用宏
    这是C++语言发明者的忠告
    所以你所谓好点的方法肯定不是真正的好方法不过我确实没看明白你想干什么
    如果你写的表达式是正确的(当然他肯定是错误的)
    sqltext的值是什么?
    sqltext==“info[0][i][j]”?
    你为什么不用Format