错误:初始化元素在加载时不可计算
我有一个采用结构的函数,我试图将其变量存储在数组中:
int detect_prm(Param prm) {
int prm_arr[] = {prm.field1, prm.field2, prm.field3};
return 0;
}
但是使用 gcc -Wall -ansi -pedantic-errors -Werror 时,我收到以下错误:
初始化元素在加载时不可计算
它对我来说看起来很好,有什么问题吗?
I have a function that takes a struct, and I'm trying to store its variables in array:
int detect_prm(Param prm) {
int prm_arr[] = {prm.field1, prm.field2, prm.field3};
return 0;
}
But with gcc -Wall -ansi -pedantic-errors -Werror
I get the following error:
initializer element is not computable at load time
It looks fine to me, what's wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这在 C 中是非法的。初始化列表必须是常量编译时表达式。 请执行以下操作:
This is illegal in C. Initializer lists must be constant compile time expressions. Do the following instead:
迈克的回答绝对正确。
但是,如果您能够使用 GNU C 扩展,或者使用更新更好的 C99 标准(使用
--std=c99
选项),那么像这样的初始化程序是完全合法的。 C99 标准已经发布 9 年了,大多数 C 编译器都很好地支持它......尤其是这个功能。Mike's answer is absolutely right.
However, if you're able to use the GNU C extensions, or to use the newer and better C99 standard instead (use the
--std=c99
option), then initializers such as this are perfectly legal. The C99 standard has been out for, well, 9 years, and most C compilers support it quite well... especially this feature.