gpt4 book ai didi

c - 获取有关 C 类型结构体成员的信息(类型、值...等)

转载 作者:行者123 更新时间:2023-11-30 19:26:44 33 4
gpt4 key购买 nike

我想获得一些关于 C 风格结构的帮助。我对C不太了解,所以我不熟悉基础知识。

现在,我有一个结构体 (outerStruct),其中包含其他结构体作为成员(innerStruct1、innerStruct2...)。我需要做的是获取innerStruct1,innerStruct2的成员变量的值....

我拥有的唯一信息是指向outerStruct的指针和一个数据结构,该数据结构具有每个innerStructs的成员变量的所有可能的变量类型。请注意,所有变量名称只是变量类型 +“_val”,所以如果我可以输入成员变量的类型,我也可以获得变量名称。

我需要获取有关innerStructs成员的信息并将它们解析为文本文件,s.t变量名称和变量值将显示。

不使用变量名可以获取innerStruct的成员变量吗?由于 C 负责内存分配,也许这是可能的?如果不可能,我可以获得哪些可能的信息?

变量名和类型的容器非常大,因此如果我使用所有值来检索信息,它将执行太多的空检查,并且时间将与容器的大小呈线性关系。相反,我想知道是否可以利用命名约定并使代码更加高效。

struct outerStruct {
innerStruct1 innerStruct1_val;
innerStruct2 innerStruct2_val;
}

struct innerStruct1 {
int int_val = 5;
char char_val = 'a';
}

struct innerStruct2 {
float float_val = 4.0;
double double_val = 5.0;
}

预期输出(打印到屏幕):

"innerStruct1_val : int_val = 5, char_val = 'a' || innerStruct2_val : float_val = 4.0, double_val = 5.0"

TL;DR 我想从嵌套结构中获取内部结构的值,而不使用实际的变量名称。

(此外,此处的代码仅显示结构的布局。将使用正确的语法。)

最佳答案

在 C 语言中,您必须手动遍历各个结构的成员。但是,即使您想保持结构内部的“私有(private)”,只需将结构标记名称公开,您就可以提供一个公共(public)函数来打印该函数。

struct outerStruct;

void print_outerStruct(const struct outerStruct *);

内部结构也是如此。

由于您必须在某个地方定义完整的外部结构才能使其有用,因此该地方也将是提供其打印功能的实现的地方。

struct outerStruct {
struct innerStruct1 innerStruct1_val;
struct innerStruct2 innerStruct2_val;
};

void print_outerStruct (const struct outerStruct *os) {
printf("outerStruct (%p) { ", os);
printf("%s: ", "innerStruct1_val");
print_innerStruct1(&os->innerStruct1_val);
printf("%s: ", "innerStruct2_val");
print_innerStruct2(&os->innerStruct2_val);
printf(" }\n");
}

有了足够的脚手架,您也许能够机械地生成这些打印函数。例如,它可能需要为您的结构编写一个解析器。

关于c - 获取有关 C 类型结构体成员的信息(类型、值...等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56677438/

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