【发布时间】:2020-11-25 01:46:29
【问题描述】:
我正在发现 c 代码固件并遇到以下结构:
static void test_db_hd_fill_full(void)
{
uint32_t err_code;
uint16_t indexCount;
rb_historical_data_t hd = {
.time = 0xAAAAAAAA,
.max = 0xBBBB,
.min = 0xCCCC,
.Count = 0x1111,
.distance = 0x2222,
.activityTime = 0x3333
};
对于某些情况...固件有一个数据库,用于存储物理设备上的变量数据。
我想知道这个结构中的十六进制值代表什么。它是否代表特定变量的内存区域的开始?如果我要删除所有变量并仅用一个变量替换它...该变量将分配什么十六进制值?
【问题讨论】:
-
你只需要查找
rb_historical_data_t结构的定义。它们似乎不是内存区域,而只是使用十六进制表示法初始化的整数。具体来说,时间是一个 32 位整数(uint32_t如果无符号),所有其他字段都是 16 位整数。 -
@RobertoCaboni 的解释对我来说是正确的。它们不太可能是有意义的值,因为 (1) 如果 min 和 max 是无符号的 16 位整数,则
max的值低于min,并且 (2) 如果它们是有符号的 16 位整数,那么这些值是负数,这似乎也不太可能。所以可能它们就在那里,以便在固件调试时这些值很容易被识别为已初始化(正如@Barmar 的回答所说。)