ユーザーが 3+4*(3-5)/2 3のようなものを入力すると、電卓が値を返す関数電卓を作成したいと考えています。現在、数式の文字列を解析する方法を見つけようとしています。構築されたパーサーとアルゴリズムがいくつかあることは知っていますが、#define
メソッドを使用してそれが可能かどうかを知りたいです。基本的に、#define を使用して文字列内の @ と " " を文字通り削除し、評価可能な式のように見せたいと考えています。この段階では、x や 3*k、a*b/c などの未知の変数は使用しません。すべては、コンパイラによって直接評価できる3+4 や 3 2などの数値と演算子になります。ここに私が書きたいものがあります#define
:
#define eval@"(x)" x
上記のコードでは、eval は単なる解析のシグナルであり、@"x" は解析する必要がある実際の文字列であり、x は数式です。翻訳後、xだけが残ります。たとえば、私が書くと
double result = eval@"(3+4)";
コンパイラは読み取ります
double result = 3+4;
(私の理解によると#define
)。ただし、コードは機能しません。引用符がコンパイラを混乱させ、コードが壊れる原因になっているのではないかと思います。私の質問は次のとおり#define
です。