gpt4 book ai didi

c++ - union 结构数组的初始化太多

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:14 27 4
gpt4 key购买 nike

这段代码只是为了测试我对结构数组访问的了解。当我执行这段代码时,它给了我两个 many initializes for param 的错误。请帮助我了解错误并解决此问题。我试图重用已经被某人解决的代码。我关于用参数 Param_u 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 和指定的初始值设定项(C99 功能)。 C++ 不支持那个。在 clang++ 和 g++ 上启用 -pedantic-errors 选项。参见 this问题了解更多详情。您正在使用特定于编译器的扩展,因此您的程序不可移植。

查看现场演示 here .

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.

关于c++ - union 结构数组的初始化太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43532700/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com