Tag: 初始化器

在声明时初始化一个联合数组

我正在尝试在声明时初始化以下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.c: In function ‘main’: matrix.c:21: error: incompatible types in initialization matrix.c:21: warning: excess elements in union initializer matrix.c:21: warning: (near initialization for ‘m[0]’) matrix.c:21: warning: excess elements in union initializer matrix.c:21: warning: (near initialization for ‘m[0]’) matrix.c:21: warning: […]

为什么我得到关于初始化器不是常数的错误?

我使用以下代码。 const int X_ORIGIN = 1233086; const int Y_ORIGIN = -4728071; const int Z_ORIGIN = 4085704; const int xyzOrigin[NUM_DIMENSIONS] = {X_ORIGIN, Y_ORIGIN, Z_ORIGIN}; 当我编译它时,GCC给我以下错误。 Transformations.h:16:1:错误:初始化元素不是常量 那是什么意思? 我该如何修复我的代码?

如何在C中用malloc初始化静态指针?

我正在尝试在C中使用malloc启动静态变量(在函数内部),但我得到的是“初始化程序不是常量错误”。 我知道我不能在C中使用非常量启动静态,但是有人能想到解决方案吗? 我需要代码具有与此相同的效果: static int *p = (int *)malloc(sizeof(int)); 有诀窍/解决方法吗? 编辑:我有一个函数,每次标志变高时调用。 在这个函数中,我正在创建并启动一个新线程。 我声明了一个指向结构的指针,并使用malloc分配内存,然后将此指针传递给线程。 然后该函数返回控制。 当我重新进入函数时,我最初打开的线程仍将运行,我希望能够访问我最初传递给线程的内存区域。 这就是为什么我需要一个静态,以便我可以在第一次调用时使用malloc,然后在后续调用中使用相同的地址。 这样我就可以从线程中获取信息。 这一切都是为了避免使用全局变量。