使用C中的直接参数访问调用不同的函数

Ult*_*nct 3 c++ printf

我最近偶然发现了这个页面.我对涉及直接参数访问的部分特别感兴趣.

我只是想知道是否有任何方法只执行其中一个函数,具体取决于以下行中n的值:

printf("%n$p", func1, func2, func3 .. funcN);
Run Code Online (Sandbox Code Playgroud)

其中func1,..具有签名为int func1(),int func2()等等.这是一个限制,因为我可能希望函数也返回void.

在上面的行中,只打印了函数的地址; 该函数未被调用..

我甚至尝试使用','(逗号运算符)来实现这一点; 但是在这种情况下,列表中的所有函数都将被调用,并且打印对应于'n'的结果.

有没有办法在printf(..)中实际执行该函数?

谢谢.

Ale*_*lli 5

不是一行,而是像:

typedef int (*fp)();
fp[] thefuncs = {func1, func2, func3, func4};
printf("%d", fp[n]());
Run Code Online (Sandbox Code Playgroud)

似乎是一个开始.如果函数返回void而不是int,那你打算打印什么?