将数据转换为代码
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 就是您所追求的。
这是最常见的方法(据我所知)将由一串字符表示的数学表达式转换为 postfix
ed 版本(运算符在操作数之后而不是在操作数之间),它是用代码更容易解释。
祝你好运!
在 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 就是您所追求的。
这是最常见的方法(据我所知)将由一串字符表示的数学表达式转换为 postfix
ed 版本(运算符在操作数之后而不是在操作数之间),它是用代码更容易解释。
祝你好运!