我有一个用 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
将某些变量初始化为相同的值。
关于根据其他结构成员创建结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44801980/