我一直在尝试在C中制作一个eval函数.
目前,我的想法是String -> function pointer使用所有标准库C函数和我所做的所有函数进行散列,这样我就可以处理函数调用(在已经定义的函数上).
但是,用字符串定义函数(即调用eval("int fun(){return 1;}"))仍然是一个问题,我不知道如何在运行时处理它,有没有人有任何想法?
变量定义似乎不是太大的问题,因为我可以使用另一个哈希var_name -> pointer并在需要变量时使用该指针.
顺便说一句,我不关心性能,我想让这个工作.
有哪些工具支持重构C代码(重命名变量,提取方法,查找方法引用,......)
最好是Linux环境,但Windows工具也可以.如果有可用于emacs的东西,甚至更好!
可能重复:
是否有C语言翻译?
在执行C程序时是否有"C实现"与"C抽象机器"相同?也就是说,C语言的简单解释器,如C99等C标准中所描述的.
C编程语言的许多实现都是编译器(Clang,GCC,MSVC).我正在寻找C解释器的开源实现.
简单地在python和C++中运行一个近空的for循环(如下所示),速度非常不同,python慢了一百多倍.
a = 0
for i in xrange(large_const):
a += 1
Run Code Online (Sandbox Code Playgroud)
int a = 0;
for (int i = 0; i < large_const; i++)
a += 1;
Run Code Online (Sandbox Code Playgroud)
另外,我该怎么做才能优化python的速度?
(另外:我在这个问题的第一个版本中做了一个不好的例子,我并不是说a = 1因此C/C++编译器可以优化它,我的意思是循环本身消耗了大量资源(也许我应该使用+ = 1作为示例.. ..我的意思是如何优化是如果for循环就像一个+ = 1那么简单,它怎么能以与C/C++类似的速度运行?在我的练习,我使用了Numpy所以我不能再使用pypy了(现在),是否有一些通用的方法可以更快地制作循环(例如生成列表中的生成器)?)
我有一个程序可以做两件事.但我希望程序只根据我在格式中输入的命令运行一个特定的部分
program -a
program -s
Run Code Online (Sandbox Code Playgroud)
a或s的编程方式是告诉它做某些特定的事情.
例如,如果我的程序是这样的:
# program -a entered
z = x + y
# program -s entered
z = x - y
Run Code Online (Sandbox Code Playgroud)
现在我可以在运行程序后使用if语句轻松完成此操作,但是是否可以直接跳转到我在命令提示符下说的语句?
我知道了一种使用__FILE__宏在C中打印正在运行的代码的源代码的方法.因此,我可以寻找位置并使用putchar()来改变文件的内容.
是否可以使用此方法动态更改正在运行的代码?
这是我的目标 - 采用ASCII roguelike Angband并创建一个用户可以在游戏服务器端玩游戏的在线控制台.从我肤浅的角度来看,这似乎应该是可行的 - 因为有可以在线显示多种语言的REPL控制台,所以解释语言应该不是问题,对吧?
理想情况下,它就像在服务器上运行游戏并将输出显示到客户端浏览器一样简单.这是可能吗?
在c中是否有办法将字符串转换为命令?例如:
void x(string n){
//do something
}
void y(int n){
//do something
}
void z(int n){
//do something
}
stringForConvert="z(10);y(2);x(\"Its cool\");";
mysteryCommand(stringForConvert);
Run Code Online (Sandbox Code Playgroud)
请注意,我没有奢侈的写入另一个文件并进行编译.
我正在寻找一种简单的方法来查找在内存中结束的函数.我正在开发一个项目,可以在其他代码中找到运行时问题,例如:代码注入,病毒等等.我的程序将使用将在运行时检查的代码运行,以便我可以访问内存.我无法访问源代码本身.我想只检查它的具体功能.我需要知道函数在堆栈中的起始和结束位置.我正在使用Windows 8.1 64位.
关于"编译与解释"有很多答案和引文,我确实理解它们之间的差异.
说到C,我不确定.C是编译还是解释或两者兼而有之?如果你加上一些解释,我真的很感激.
c ×10
c++ ×2
eval ×2
browser ×1
dynamic ×1
emacs ×1
interpreter ×1
linux ×1
memory ×1
optimization ×1
performance ×1
porting ×1
python ×1
refactoring ×1