我有几个大型静态数组,用于资源受限的嵌入式系统(小型微控制器、裸机).在整个项目过程中,这些数据偶尔会被添加到数据中,但它们都遵循相同的人口数学公式.在编译之前,我可以用Python脚本生成一个新的头,它需要所需的数组,但是在预处理器中发生它更合适,就像你可以用C++中的模板元编程一样.在C语言中有没有相对简单的方法?我已经看到了一些方法,只使用预处理器就可以获得while个循环这样的控制 struct ,但这对我来说似乎有点不自然.

这里是一个类似于arctan的映射的示例,在Python中,参数a用于确定数组的长度和值,当前以从大约arctan到大约2^14的各种值运行:

def make_array(a):
    output = []
    for x in range(a):
        val = round(a * ((x / a)**2 / (2 * (x / a)**2 - 2 * (x / a) + 1)))
        output.append(val)
    return output

推荐答案

在C语言中有没有相对简单的方法?

不.

坚持使用Python脚本,并将其整合到构建系统中.使用其他脚本生成C代码是正常的.这比一百万行C代码要简单得多.

看看M4或Jinja2(或PHP)——这些宏处理器允许在同一文件中与C源代码共享代码.

C相关问答推荐

为什么 memcpy() 随机不复制正确的值?

为什么启用优化时 GCC 11 编译器会产生奇怪的输出?

Gnuplot 和 C - 绘制不同的符号/ colored颜色

在 C 中使用数组而不是向量

幂函数给出的答案与 C 中的 math.pow 函数不同

确定在嵌入式 C 中运行时使用哪个变量

在编译时构建静态数组

判断由大括号组成的输入字符串是否格式正确

通过默认网关地址的硬件地址而不是以太网多播地址发送多播

为什么 malloc() 被认为是库调用而不是系统调用?

为什么使用 MOV 指令将 XOR 交换优化为普通交换?