gpt4 book ai didi

c - C 结构中的运行时条件字段

转载 作者:行者123 更新时间:2023-11-30 15:36:02 27 4
gpt4 key购买 nike

我有一个用 C 编写的特定应用程序,需要提高内存效率。它正在收集统计信息,因此我需要能够在运行时“打开/关闭”某些字段以最大限度地减少内存消耗。我知道你可以使用宏定义条件结构体字段,但如果我没记错的话,那是编译时的,有没有可能在运行时在 C 中执行此操作的方法?

示例:

输入:

collect (A,B)

将产生如下结构:

struct statistics{
double A;
double B;
};

但输入:

collect (A,B,C)

将产生如下结构:

struct statistics{
double A;
double B;
double C;
};

最佳答案

无法在运行时关闭结构内的某些字段。但是,您可以拥有一个指向动态分配的 double 组的指针,该 double 组可以表示多个字段。例如:

#include <stdio.h>
#include <stdlib.h>

struct stats
{
size_t number_of_doubles;
double* data;
};

void make_stats(struct stats* pStats)
{
pStats->number_of_doubles = 3;
pStats->data = (double*) malloc(pStats->number_of_doubles * sizeof(double));
}

void delete_stats(struct stats* pStats)
{
free(pStats->data);
}

int main()
{
struct stats foo;

make_stats(&foo);

foo.data[0] = 3.0;
foo.data[1] = 5.0;
foo.data[2] = 7.0;

delete_stats(&foo);
return 0;
}

关于c - C 结构中的运行时条件字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22718498/

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