比方说,我有一个函数:调用函数只在C运行时知道参数类型?
int foo (int A, char B){...}
一个我想要实现的功能是能力,为用户呼吁通过Linux终端应用程序的任何功能。所以,作为软件的输入,在终端,他们键入类似:
foo 2 'a'
然后我的应用程序解析的是,使用符号表是能够找到的地址为foo()
,还有键入所有参数。
但是,我不确定在调用它时如何将参数传递给函数,因为根据所调用的函数,我可以有数百个不同的参数类型组合。
任何提示没有数百个嵌套的if语句在调用函数之前将参数转换为正确的类型可以实现如何实现?
该功能类似于GDB的功能,您可以在其中执行call foo(2,'a')
和GDB调用。
所以你想建立你自己的C解释器?那么,从学习正式的语法,状态机,词法分析器,解析器和AST开始。 – Drop
你会想做一些类型检查,以便如果用户写'foo'a'2',你可以避免用无效参数调用函数(这可能会导致程序崩溃)。这意味着您需要一种方法来在运行时表示值的类型,以及描述函数期望的类型的元数据,以及用于比较这两者的代码。此时,您基本上正在为[动态类型](https://en.wikipedia.org/w/index.php?title=Dynamic_typing)语言实施解释器。考虑使用*现有*动态类型的语言,如Python。 – Wyzard
@Drop这个问题与解释C无关。它关于调用使用C调用约定的编译函数。 –