我有一个用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};
因为在我的实际应用中,我有两个以上的区域相互依赖。
答案 0 :(得分:1)
初始化变量时,初始化程序不能是另一个变量的值,即使该变量已定义const
。它必须是一个恒定的值。
您可以做的最好的就是您的第二个示例:使用#define
将某些变量初始化为相同的值。