让我首先说我对C的经验很少。
我想从外部文件中读取C代码,例如:
switch(status)
{
case 0:
{
read from /path/file1
break;
}
case 1:
{
read from /path/file2
break;
}
case 2:
{
read from /path/file3
break;
}
}
(伪)文件1-3中可能包含哪种代码的示例:
if((this & that) && !(other & another))
{code;more code;}
else if(!(this & that) && (other & another))
{code;more code;}
我应该在什么代码中放置“从/ path / file1读取”以将代码读取为代码而不是字符串?
编辑:我的目标是能够在编译后编辑“file1,file2,file3”。我正在编辑linux'非官方“g15”驱动程序的源代码,因为“g15macro”(用于编辑宏键的软件)对我来说不起作用,所以我一直在将宏硬编码到驱动程序中。我想让事情变得更容易,所以每次我想编辑宏时都不需要重新编译。 (Gnome 15这是一个比g15daemon更新的项目对我来说也不起作用;我得到输入延迟)
答案 0 :(得分:1)
如果你想在可执行文件中选择并根据选择执行,那么你可以在linux环境中使用system()
。
system("path to executable")
如果要编辑然后执行,则一种方法是编辑源文件。然后在主程序中编译它,然后执行新编译的可执行代码。 可以通过在程序中的system()内编写一系列命令来完成。
case 0: edit /path/file1
system("gcc -o file1 /path/file1")
system("/path/file1")
答案 1 :(得分:0)
你应该多学习C语言。
正如人们已经说过的那样,C不会被解释,因此您无法在运行时处理原始代码。 您需要运行的每段代码都必须编译。
话虽如此,如果您只想更改程序的某些部分,则无需重新编译整个源代码。这就是为什么人们将项目分成多个文件,单独编译然后将编译后的字节码链接在一起(静态或动态),同时使用Makefile确定项目的哪些部分(哪些文件)需要重新编译。
您的case语句可以包含函数调用,这些函数可以在单独的文件中定义。在更新时,您只需重新编译这些文件。 (如果你使用动态链接,我想你可以让你的程序调用你的编译器来重新编译它自己的动态链接部分。)