是否可以在不使用堆的情况下在 C 中创建类似 Vector 的通用数据结构。基本上我需要一个数组数据类型,但如果它有一个更通用的版本。
typedef struct {
/* some data types*/
}TYPE1;
typedef struct {
/* some data types*/
}TYPE2;
typedef struct _GCACHE_T
{
const int element_size;
const int count;
struct _ELEMENT {
UBYTE data[element_size];
BOOLEAN is_valid;
}element[count];
}GCACHE_T;
GCACHE_T f_cache1 = {sizeof(TYPE1), 15, {0} };
GCACHE_T f_cache2 = {sizeof(TYPE2), 10, {0} };
上面的代码不会编译,但我提供它是为了更清楚地说明我的要求。
如果允许使用堆内存,这将很容易实现。由于该代码用于小型 micros 堆内存使用是不允许的。
我本可以立即使用,但只是检查它是否可以以通用方式完成。
TYPE1 f_cache1[15];
TYPE2 f_cache2[10];
Vector 不会变大。我也可以使用联合,但有一个内存权衡,所以不愿意使用它。