我有一个用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
将某些变量初始化为相同的值。