首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自动初始化指向函数的指针数组?

如何自动初始化指向函数的指针数组?
EN

Stack Overflow用户
提问于 2019-05-23 22:40:22
回答 1查看 74关注 0票数 0

我有一组函数:

代码语言:javascript
复制
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循环自动初始化指向函数的指针数组,而不是显式地键入如下代码

代码语言:javascript
复制
int (*pfunc[100500])(int, int) = {a1, a2, ..., a1005000}

我的第一个想法是以如下方式使用#define指令:

代码语言:javascript
复制
#define z(n) a##n

// ..............

for (int i = 1; i< 100501;i++)
{ 
    pfunc[i] = z(i);
}

不幸的是,z(i)变成了"ai“,而不是"a1”、"a2“等。

我希望,也许一些C大师能给我一些建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-24 11:57:46

展开@Giacomo Catenazzi的评论,考虑以下(不是很好的) python脚本:

代码语言:javascript
复制
# 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]))))

使用no执行。在您的函数(python generate_funcs.py 100500)中,将生成一个名为funcs.inc的文件,其中包含:

代码语言:javascript
复制
a1,
a2,
...
a100500

然后,您可以将其包含在C代码中:

代码语言:javascript
复制
int (*pfunc[])(int, int) = {
#include "funcs.inc"
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56277668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档