【发布时间】:2015-04-13 20:55:32
【问题描述】:
我有一堆嵌套结构,里面有指向指针的数组。 我需要一个工具来生成指向数据类型的(代码)实例。
typedef stuct
{
TYPE_1 * data[5];
int a;
}TOP_T;
typedef struct
{
TYPE_2 * pToType1Array[2];
char c;
}TYPE_1;
typedef struct
{
int b;
}TYPE_2;
要正确使用这两种类型,我需要创建总共 10 个 TYPE_2 实例 - 因为 5*2 - 和 2 个 TYPE_1 实例,然后将指针分配给这些实例。
TYPE_2 t2_0;
TYPE_2 t2_1;
TYPE_1 t1_0;
TYPE_1 t1_1;
TYPE_1 t1_2;
TYPE_1 t1_3;
TYPE_1 t1_4;
TOP_T first;
first.data[0] = &t1_0;
first.data[1] = &t1_1;
...
我知道如何手动创建实例,但想要一个脚本/工具来执行此操作。
我不能使用 malloc。
我使用的是 Eclipse,所以我可以访问类型树。
现在,我必须这样做
/********* ST_CHRONO_TRACE_CONTEXT_T - one for each CHRONO_NUM_TRACE_CONTEXTS per CHRONO_NUM_SESSION_CONTEXTS session */
ST_CHRONO_TRACE_CONTEXT_T CHRONO_TraceContext_0_0;
ST_CHRONO_TRACE_CONTEXT_T CHRONO_TraceContext_0_1;
ST_CHRONO_TRACE_CONTEXT_T CHRONO_TraceContext_1_0;
ST_CHRONO_TRACE_CONTEXT_T CHRONO_TraceContext_1_1;
ST_CHRONO_TRACE_CONTEXT_T * CHRONO_TraceContext_PTRS[CHRONO_NUM_SESSION_CONTEXTS][CHRONO_NUM_TRACE_CONTEXTS] =
{
{&CHRONO_TraceContext_0_0, &CHRONO_TraceContext_0_1},
{&CHRONO_TraceContext_1_0, &CHRONO_TraceContext_1_1}
};
这些定义是我想要自动生成的。
【问题讨论】:
-
auto-generate是什么意思?您可以使用malloc系列,从堆栈或全局变量构建。您不能从外部创建对象。 -
我的意思是自动生成代码,文本。我不允许使用 malloc。 @holgac
-
这里有一些解决方案: 1. 做一次,复制粘贴。 2.在像Visual Studio这样的IDE中编写脚本,让您可以访问语法树。
标签: c struct auto-generate