如何自动初始化函数指针数组?
How to initialize automatically an array of pointers to function?
我有一组函数:
int a1(int x, int, y)
{ do some stuff}
int a2(int x, int, y)
{ do some stuff}
//.........
int a100500(int x, int, y)
{ do some stuff}
有没有一种方法可以通过 FOR 循环自动初始化函数指针数组,而不是像
这样显式地键入代码
int (*pfunc[100500])(int, int) = {a1, a2, ..., a1005000}
我的第一个想法是按以下方式使用#define 指令:
#define z(n) a##n
// ..............
for (int i = 1; i< 100501;i++)
{
pfunc[i] = z(i);
}
不幸的是,z(i) 变为 "ai" 而不是 "a1"、"a2" 等
我希望,也许一些 C 大师可以帮助我一些建议。
扩展@Giacomo Catenazzi 的评论,考虑以下(不太好)python 脚本:
# generate_funcs.py
import sys
with open('funcs.inc', 'w') as f:
f.write(',\n'.join('a{}'.format(i + 1) for i in range(int(sys.argv[1]))))
执行编号您的函数 (python generate_funcs.py 100500
) 会生成一个名为 funcs.inc
的文件,其中包含:
a1,
a2,
...
a100500
然后您可以将其包含在您的 C 代码中:
int (*pfunc[])(int, int) = {
#include "funcs.inc"
}
我有一组函数:
int a1(int x, int, y)
{ do some stuff}
int a2(int x, int, y)
{ do some stuff}
//.........
int a100500(int x, int, y)
{ do some stuff}
有没有一种方法可以通过 FOR 循环自动初始化函数指针数组,而不是像
这样显式地键入代码int (*pfunc[100500])(int, int) = {a1, a2, ..., a1005000}
我的第一个想法是按以下方式使用#define 指令:
#define z(n) a##n
// ..............
for (int i = 1; i< 100501;i++)
{
pfunc[i] = z(i);
}
不幸的是,z(i) 变为 "ai" 而不是 "a1"、"a2" 等
我希望,也许一些 C 大师可以帮助我一些建议。
扩展@Giacomo Catenazzi 的评论,考虑以下(不太好)python 脚本:
# generate_funcs.py
import sys
with open('funcs.inc', 'w') as f:
f.write(',\n'.join('a{}'.format(i + 1) for i in range(int(sys.argv[1]))))
执行编号您的函数 (python generate_funcs.py 100500
) 会生成一个名为 funcs.inc
的文件,其中包含:
a1,
a2,
...
a100500
然后您可以将其包含在您的 C 代码中:
int (*pfunc[])(int, int) = {
#include "funcs.inc"
}