将数据转换为代码

Converting data to code

在 C 中,我想制作一个名为 TEST() 的宏,它采用有效的 C 算术表达式并打印和计算它。例如,如果我给它 TEST(5*2+3),它会打印到控制台 5*2+3 = 13。不幸的是,我不知道如何将表达式转换为字符串,也不知道如何获取给定的字符串并将其作为代码求值。 我该怎么做?

您可以使用字符串化运算符将参数转换为字符串,然后扩展为打印字符串和结果的 printf() 调用。我的代码假定表达式始终是 int.

#define TEST(EXP) printf("%s = %d\n", #EXP, (EXP))

对于你问题的解析部分:

Shunting-yard algorithm 就是您所追求的。

这是最常见的方法(据我所知)将由一串字符表示的数学表达式转换为 postfixed 版本(运算符在操作数之后而不是在操作数之间),它是用代码更容易解​​释。

祝你好运!