【发布时间】:2010-11-15 01:59:57
【问题描述】:
在我的嵌入式 c 程序中,我有一个结构:
struct var{
unsigned long value;
unsigned long length;
+ More
}
这些结构的数组用于保存变量。大多数存储的变量都简单地存储在“值”中,因此长度设置为 1。
但是,其中一些变量是数组,我试图将起始地址存储在“值”中。
unsigned long lookup[10];
variables[x].length = 10;
那我不太清楚地址怎么存……
variables[x].value = lookup;
// lookup is a pointer so I cant put it into value
或
variables[x].value = (unsigned long)lookup;
// value reads back through sprintf+uart as '536874692'
// which couldnt be a valid memory address!
我可能会放弃并在结构中添加一个指针变量
编辑:
我想避免将指针添加到结构,因为我必须返回并重写闪存读/写函数来保存指针。这些是相当复杂的,目前工作,所以我宁愿不碰它们!
【问题讨论】:
-
为什么 536874692 不是有效地址?
-
刚刚意识到这一点。 536874692 是 20000EC4 这可能是有效的......
-
请注意,如果您的“闪存读/写函数”不知道查找是指针,他们将不知道保存它指向的数据。