在声明时初始化一个union数组

在声明时初始化一个union数组,第1张

概述我正在尝试在声明初始化以下union数组: typedef union { __m128d m; float f[4]; } mat;mat m[2] = { {{30467.14153,5910.1427,15846.23837,7271.22705},{30467.14153,5910.1427,15846.23837,7271.22705}}}; 但是我发现了以下错误: matrix 我正在尝试在声明时初始化以下union数组:
typedef union { __m128d m;  float f[4]; } mat;mat m[2] = { {{30467.14153,5910.1427,15846.23837,7271.22705},{30467.14153,7271.22705}}};

但是我发现了以下错误:

matrix.c: In function ‘main’:matrix.c:21: error: incompatible types in initializationmatrix.c:21: warning: excess elements in union initializermatrix.c:21: warning: (near initialization for ‘m[0]’)matrix.c:21: warning: excess elements in union initializermatrix.c:21: warning: (near initialization for ‘m[0]’)matrix.c:21: warning: excess elements in union initializermatrix.c:21: warning: (near initialization for ‘m[0]’)matrix.c:21: error: incompatible types in initializationmatrix.c:21: warning: excess elements in union initializermatrix.c:21: warning: (near initialization for ‘m[1]’)matrix.c:21: warning: excess elements in union initializermatrix.c:21: warning: (near initialization for ‘m[1]’)matrix.c:21: warning: excess elements in union initializermatrix.c:21: warning: (near initialization for ‘m[1]’)
解决方法 引用 this page:

With C89-style initializers,structure members must be initialized in the order declared,and only the first member of a union can be initialized.

所以,要么先将float数组放入,要么尽可能使用C99并写入:

mat m[2] = { { .f = { /* and so on */ } },/* ... */ };

重要的是.f.

总结

以上是内存溢出为你收集整理的在声明时初始化一个union数组全部内容,希望文章能够帮你解决在声明时初始化一个union数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1236621.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存