根据其他struct成员创建struct

时间:2017-06-28 12:07:48

标签: c struct

我有一个用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};

因为在我的实际应用中,我有两个以上的区域相互依赖。

1 个答案:

答案 0 :(得分:1)

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

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