【发布时间】:2013-07-04 17:44:10
【问题描述】:
我正在生成 C 代码以在嵌入系统上运行,并且我想要生成的代码包含对具有大量参数的函数的调用。当我生成函数时,这些参数的数量总是已知的,它们总是由许多输入和输出数组组成。
在我当前版本的代码中,我生成的 C 代码包含以下形式的函数:
void f(const double* x0, const double* x1, const double* x2, double* r0, double* r1);
在这种情况下,我有 3 个输入数组和 2 个输出数组。然而,一般来说,输入和输出数组的数量可能非常大,如数百或数千。请注意,该代码不适合人类阅读。
现在,我了解到 C 标准 only guarantees support for up to 127 function parameters。此外,我还希望我生成的代码符合嵌入式系统的严格编码标准,我已经看到Jet Propulsion Laboratory's coding standard for C-code 最多只允许 6 个参数。
那么,我怎样才能以最有效的方式用最多 6 个函数参数重写上面的代码呢?请注意,我只对执行速度感兴趣,而不是代码可读性。
我的第一个想法是将上面的函数处理如下:
void f(const double* x[], double* r[]);
然后按如下方式调用这段代码(线程安全不是问题):
static const double* x[] = {x0, x1, x2};
static double* r[] = {r0, r1};
f(x,r);
这是个好主意吗?还有其他更有效的替代方案吗?
【问题讨论】:
-
确实,使用数组似乎是自然而然的答案。
-
参数是否总是相同的,还是之前计算的?你可以使用静态指针组吗?
-
@jeb 数组本身保存在静态内存中,但(输入)数组的内容是在之前计算的。
标签: c embedded code-generation