【发布时间】:2012-01-03 03:26:31
【问题描述】:
我正在做一个程序转换,从允许在数组初始值设定项中使用表达式的语言到 C99,而 C99 不允许。
目前,我处理此问题的方式是创建一个 __arrayInit 函数,然后在其中生成大量此类:
array[0] = x + y * z; // Sample Expression
array[1] = a / b + c; // Another
array[2] = 5; // sometimes there's a constant
...
通常有数百个这样的单独初始化。有没有更好的执行速度更快的方法?如果它的编译速度也更快,那就谢了。
编辑:表达式有时是非常量的,其中可以包含变量和函数调用。
【问题讨论】:
-
Constant 表达式允许在数组初始值设定项中使用。
-
您的数组是静态的还是在函数内部定义的?在后一种情况下,C99 中允许使用非常量初始值设定项,这里是来自 GCC 文档的an example。
-
@p.kolya,函数范围内允许任何表达式。
-
这是一个结构中的指针,它在 __arrayInit 函数中被 malloc'd。
-
不要期望速度。对于每个元素,它必须评估表达式然后存储它。不管怎么做都是这样。
标签: c arrays optimization