C-根据其他结构成员创建结构



我有一个用Typedef定义的结构

typedef struct 
{
   uint16_t x;
   uint16_t y;
   uint16_t width;
   uint16_t height;
}TArea;

现在,我想创建一些彼此依赖的区域。像

areadefs.h

extern TArea UI_AREA_1;
extern TArea UI_AREA_2;    

areadefs.c

TArea UI_AREA_1 = {.x = 0, .y = 0, .width = 5, .height = 10};
TArea UI_AREA_2 = {.x = UI_AREA_1.x, .y = 200, .width = 5, .height = 10};

为什么我会得到"错误:表达必须具有恒定值",什么是更好的解决方案?我想做的是

#define X_VAL 0
TArea UI_AREA_1 = {.x = X_VAL, .y = 0, .width = 5, .height = 10};
TArea UI_AREA_2 = {.x = X_VAL, .y = 200, .width = 5, .height = 10};

因为在我的真实应用中,我的两个领域彼此相互依赖。

初始化变量时,即使该变量已定义了const,初始化器也不能是另一个变量的值。它必须是一个恒定值。

最好的方法是您的第二个示例:使用#define将某些变量初始化为相同的值。

最新更新