c - 如何自动初始化函数指针数组?

标签 c function-pointers

我有一组函数:

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"
}

关于c - 如何自动初始化函数指针数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56277668/

相关文章:

c - 这两种指针类型真的不兼容吗?

打印整数(由用户输入)的 C 程序当数字很大时输出错误

c++ - C++ 数组大小的奇怪行为

python - 将 Python 函数传递给 Boost C++

c++ - 类的非静态成员函数的函数指针

c++ - 自定义排序和映射时更喜欢函数指针还是函数对象?

c - 另一个快速三角函数

python - Pyserial从串口读取并写入C程序

c - 在 C 中移动数组中的元素——基于指针

go - 在 Go 中执行字节数组