有没有办法运行存储在字符串中的 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 代码 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

读取存储在文本文件中的列表[重复]

有没有办法使用硒中的字符串中的数据来查找元素[重复]

如何在 C#(.NET)中执行 Javascript 代码 [重复]

有没有办法将数组绑定到mysqli准备[重复]

有没有办法在运行时通过程序识别代码文件中的保留字?

c语言字符串中的代码怎么执行?