这个办法可以啊
还有就是做一个语法分析器,不过太麻烦,我也遇到过类似情况,实现方法和你的类似
难就难在cOperation的定义上要多花工夫,我试过用两个cOperation,一个是本次动作,一个是历史动作

解决方案 »

  1.   

    用bison(yacc)吧,GNU的C/C++ compiler都是要用这工具辅助完成的。记住程序员的美德之一就是懒惰 - 少做无用功:)
      

  2.   

    Re: breath    你说的用两个cOperation是针对字符串连接函数的吧?但是你怎么知道什么时候去
    释放它呢?如这样的表达式1+strlen(cat("123", cat("123", "123"))),对第二个cat,
    其返回指针应该等到第一个cat执行玩之后才能释放,第一个cat要等到strlen执行完之后才能
    释放,不知道还有没有其它的情况。
      

  3.   

    对于字符串的操作一般不是在操作的函数中释放参数的,最好你的cat函数定义为:
        char* cat(const char* str1,const char* str2);
    当你用完了它们即可释放了,释放一般放在定义它们的那个函数里:
        char* str1=new char[100];
        char* str2=new char[23];
        char* str=cat(str1,str2);
        delete[] str1;delete[] str2;