如何在C中获取函数参数号

时间:2015-05-18 13:56:02

标签: c

如何获取功能参数编号? 如果我在函数调用中写入错误数量的参数,gcc将返回错误。不知何故,GCC“计算”参数的数量。我怎样才能获得这个价值? (固定数量的参数!)。 示例(GETPARNUMBER - 任何函数或宏或返回参数数量的其他函数):

// Init
void MyFunction(int iPar1, int iPar2, int iPar3)
{
     // Do Something
}

void main(void)
{
     printf("\n\r Number of Parameters: %d\n\r", GETPARNUM(MyFunction));
}

// End

“GETPARNUMBER”应该返回3: “参数数量:3”

由于

3 个答案:

答案 0 :(得分:2)

这是不可能的。

没有存储关于功能的元信息。请记住,编译程序时,大多数人类可读的数据(如函数和变量名称)都会被删除,在运行时不需要这些信息。

答案 1 :(得分:0)

这可能,但不是直接在你的程序中。

您可以使用类似CodeWorker的内容来解析您的C代码(编译器所做的)沿着BNF(=“代码语法”规则)。您可以编写自己的简短BNF,仅包含函数声明和计数参数,CodeWorker提供的输出可以告诉您:

Found 1 function declaration in MyFile.c:

1: void MyFunction with 3 parameters:
   - iPar1 int
   - iPar2 int
   - iPar3 int

您还可以尝试使用doc-generator,它会告诉您每个函数需要多少以及哪些参数。

最后,你可以自己编写一个解析器来解析你的C文件,并找出每个函数需要多少个参数。

这一切都取决于 为什么 您想要以编程方式计算您的参数......

答案 2 :(得分:0)

所以"这是不可能的",我必须以艰难的方式去做。 ideia是用"& function"声明一个const数组。和#34;参数的数量"通过该函数指针数组进行顺序调用。为了避免在数组中忘记函数更新(如果我改变了一些函数),我想也许有一些宏可以声明参数的数量。

感谢所有人。