2011-10-16 202 views
2

我想做以下事情。我在程序和运行时声明了一个结构,当程序正在执行时,如果有用户输入,我应该能够在我的代码中创建另一个新结构/编辑该结构。我们怎么做到这一点?这是什么“自修改代码”?请说明一下。请给出一些例子。谢谢自修改代码?

让我想一下我想做什么,我有一个名为“学生”的“结构/类”,其中包含像“int roll_no”和“int reg_no ”。如果用户希望在运行时添加一个像“char name”这样的新变量,该怎么办?

+0

这是可能的 - 而是取决于你所使用的语言。你在使用C,PHP等吗?另外,你是否打算从用户输入中创建新的代码?如果是这样,出于安全原因,您需要非常小心您接受的内容 - 尤其是在网络上。也许如果你能展示你的用例,你可以得到更准确的建议。 – halfer

+0

您使用哪种语言? –

+0

我正在使用C++,这可能在C?什么语言对于自我修改代码来说很容易?那么Python呢?这将是一个离线系统 –

回答

3

对此一看:

http://bracha.org/Site/Talks.html

有讲反射,这可能是你想要的东西 - 反思不仅是内省(其中大部分开发商已经知道了),而且要改变语言结构和运行时代码操作的含义。

最佳语言的这种东西很可能Ruby和Smalltalk。

如果你的语言不支持这些功能,你仍然选择利用代码生成 - 这是有可能在几乎所有的编程语言,但它是动态的以“EVAL”支持要容易得多。例如,即使在C/C++中,这种东西也是可能的,但是你的应用必须嵌入编译器。

Java是不错的选择太(感谢类加载器和操作字节码很多库)

哦,我差点忘了,对Lisp和metacircular评价一下。

0

听起来像是你并不需要修改现有的代码,而是发出一些新的代码在运行。运行时编译器所在的任何环境都很容易完成。这是.NET真实的,基于JVM的环境中,各种的Lisp等