有没有办法运行存储在字符串中的 C 代码 [重复]
Posted
技术标签:
【中文标题】有没有办法运行存储在字符串中的 C 代码 [重复]【英文标题】:Is there a way to run C code that's stored in a string [duplicate] 【发布时间】:2021-02-07 23:58:59 【问题描述】:我想知道是否有办法运行以字符串形式存储在变量中的代码。即str code = "i=5+6"
有人有什么想法吗?
【问题讨论】:
您要解决的问题是什么?你试过什么?你指的是一个宏,一个别名?具体 @ryyker 我想他想要c相当于python的exec('i = 5 + 6')
。
编写一个能够理解字符串中代码的语法(和语义)的解释器,将字符串传递给解释器并让它评估代码。
C 没有内置任何东西,没有。但是谷歌搜索“c expression evaluator source code”会发现很多表达式评估器。
【参考方案1】:
C 语言本身没有许多解释语言中的求值函数。
对于解释型语言,源代码被传递给解释器执行,以后很容易将字符串传递给同一个解释器。
C 通常是一种编译语言,它被传递给编译程序,编译程序将 C 代码翻译成 CPU 指令,由 CPU 直接执行。您的字符串内容也需要发生同样的事情。然而,运行已编译 C 程序的系统甚至可能没有安装编译器,因为编译器不需要运行最终程序,只需创建它。
要动态运行 C 代码,您的程序需要内置完整的编译器或 C 解释器。
另见:
Is there an interpreter for C?
https://www.drdobbs.com/cpp/building-your-own-c-interpreter/184408184
这对初学者来说不算什么,不过,这是大多数 C 专家甚至不会考虑的事情。
如果您需要在运行时动态执行代码,我能想到的最简单的方法就是使用 Lua。 Lua 解释器可以链接到你的程序中,它对于语言解释器来说非常小,然后你可以在运行时将一串 Lua 代码传递给解释器。
https://www.lua.org/
当然,其他语言(例如 Lisp)的解释器甚至更小,但恕我直言,大多数程序员不会发现这些其他语言非常吸引人,而 Lua 会立即对他们来说很常见。
【讨论】:
以上是关于有没有办法运行存储在字符串中的 C 代码 [重复]的主要内容,如果未能解决你的问题,请参考以下文章