工会结构阵列的初始化太多



此代码只是为了测试我对结构数组访问的知识。当我执行此代码时,它给我带来了两个param的初始化两个初始化。请帮助我了解错误并解决此问题。我试图重用某人已经解决的代码。我关于用参数填充strum_u param param

的问题的问题
#include <iostream>
#include <stdio.h>
#include <string.h>

#define ARRAY_COUNT(arr) (sizeof (arr) / sizeof *(arr))
typedef union {
    struct {    // Function parameters
        int *array;
        size_t size;
    };
    struct {    // Function return value
        float mean;
        int Median;
    };
} Param_u;
int main() {
    int array_1[] = {1, 2, 3, 4, 5};
    int  ret1, ret2;
    // Fill the Struct with parameters
    Param_u param = {
        .array = array_1,
        .size = ARRAY_COUNT(array_1),
    };
    return 0;
}

这不是标准的C 。您正在使用匿名struct&amp;指定的初始化器(C99功能(。C 不支持这一点。在clang 上启用-pedantic-errors选项&amp;g++。有关更多详细信息,请参阅此问题。您使用的是编译器特定的扩展名,因此您的程序无法便携。

请参阅此处的实时演示。

clang++给出以下诊断:

Error(s):
source_file.cpp:12:5: error: anonymous structs are a GNU extension [-Werror,-Wgnu-anonymous-struct]
    struct {    // Function parameters
    ^
source_file.cpp:16:5: error: anonymous structs are a GNU extension [-Werror,-Wgnu-anonymous-struct]
    struct {    // Function return value
    ^
source_file.cpp:28:9: error: designated initializers are a C99 feature [-Werror,-Wc99-extensions]
        .array = array_1,
        ^~~~~~~~~~~~~~~~
source_file.cpp:29:9: error: designated initializers are a C99 feature [-Werror,-Wc99-extensions]
        .size = ARRAY_COUNT(array_1),
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
source_file.cpp:24:16: warning: unused variable 'ret2' [-Wunused-variable]
    int  ret1, ret2;
               ^
source_file.cpp:27:13: warning: unused variable 'param' [-Wunused-variable]
    Param_u param = {
            ^
source_file.cpp:24:10: warning: unused variable 'ret1' [-Wunused-variable]
    int  ret1, ret2;
         ^
3 warnings and 4 errors generated.

最新更新