我正在从允许数组初始值设定项中的表达式转换为C99的语言进行程序转换,而不是。
目前,我正在处理的方法是创建一个__arrayInit函数,然后在其中生成大量的这些函数:
array[0] = x + y * z; // Sample Expression
array[1] = a / b + c; // Another
array[2] = 5; // sometimes there's a constant
...
通常有数百个这样的个人初始化。有没有更好的方法来执行更快的执行?如果它编译速度更快,也会感到荣幸。
编辑:表达式有时是非常量的,可以在其中包含变量和函数调用。
答案 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
声明的本地数组),您可以使用由以下内容组成的常量表达式:
23
,1E-45
,"hello"
不工作是const
限定变量。