在c语言的const结构中有什么方法可以将两个const值相乘?
举例说明:
typedef struct
{
uint16_t column;
uint16_t line;
uint16_t full_string_screen_char_number;
}font_type_t;
const font_type_t arial_32x24_def =
{
.column = 13,
.line = 7,
.full_string_screen_char_number = (.column) * (.line), // 91
};
编译器显示错误(错误:“.”标记前应为表达式)。
编译器:xc16 v2.10(基于gcc)
2条答案
按热度按时间ws51t4hk1#
在初始化器中,可以使用对象的名称来引用结构的成员:
然而,这是不可用的代码,因为C 2018 6.7.9 23说求值顺序是未指定的:
初始化列表表达式的求值相对于彼此不确定地排序,因此未指定任何副作用发生的顺序。
您应该编写代码,使初始值依赖于一些公共的先前值,而不是结构的其他成员。
4ioopgfo2#
不能有效地引用初始化列表中的其他结构成员。
你可以用宏来做这件事。