使用表达式优化C数组的初始化

时间:2012-01-02 18:59:46

标签: c arrays optimization

我正在从允许数组初始值设定项中的表达式转换为C99的语言进行程序转换,而不是。

目前,我正在处理的方法是创建一个__arrayInit函数,然后在其中生成大量的这些函数:

array[0] = x + y * z; // Sample Expression
array[1] = a / b + c; // Another
array[2] = 5; // sometimes there's a constant
...

通常有数百个这样的个人初始化。有没有更好的方法来执行更快的执行?如果它编译速度更快,也会感到荣幸。

编辑:表达式有时是非常量的,可以在其中包含变量和函数调用。

1 个答案:

答案 0 :(得分:4)

C99允许在初始化程序中使用表达式

int sarray[] = {
   [0] = x + y * z, // Sample Expression
   [1] = a / b + c, // Another
   [2] = 5, // sometimes there's a constant
};

是有效的语法。

修改 如果它是auto变量,则允许任何具有与数组的基本类型兼容的类型的表达式。

对于具有static存储类的数组(全局数组或另外使用static声明的本地数组),您可以使用由以下内容组成的常量表达式:

  • 任何类型的文字,例如231E-45"hello"
  • 枚举常量
  • 解决全局变量或函数的常量

工作是const限定变量。