有没有办法在C或C运行时编译附加代码?

这是我要做的:

>运行程序并初始化一些数据结构.
>然后编译可以访问/修改现有数据结构的附加代码.
>根据需要重复步骤2.

我想要能够在C和C上使用类似Unix的系统(特别是Linux和Mac OS X)上的gcc(最终是Java)来实现.这个想法是为这些语言基本上实现一个read-eval-print循环,在编译表达式和语句时输入它们,并使用它们来修改现有的数据结构(脚本语言完成的任务).我在python中编写这个工具,它生成C/C++文件,但这不是相关的.

我已经探讨了使用共享库执行此操作,但了解到修改共享库不会影响已经在运行的程序.我也尝试使用共享内存,但找不到一种方法来将功能加载到堆上.我也考虑过使用汇编代码,但还没有尝试这样做.

除了gcc之外绝对没有办法,除了gcc之外,我不想使用任何编译器.

如果任何人有任何想法或知道如何做到这一点,任何帮助将不胜感激.

解决方法

我认为您可以使用动态库并在运行时加载(使用dlopen和朋友)来完成此任务.
void * lib = dlopen("mynewcode.so",RTLD_LAZY);
if(lib) {
    void (*fn)(void) = dlsym(lib,"libfunc");

    if(fn) fn();
    dlclose(lib);
}

你显然必须在编译新的代码,但如果你继续替换mynewcode.so我认为这将适用于你.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...