获取信息(类型、值等).等)在 C 型结构的成员上



我想在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 中,您必须手动遍历各个结构的成员。但是,即使您想保持结构内部的"私有",通过仅使结构标记名称公开,您也可以提供一个公共函数来打印函数。

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");
}

通过足够的脚手架,您可以机械地生成这些打印功能。例如,它可能需要为结构编写解析器。

最新更新