В моей встроенной 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
OR
variables[x].value = (unsigned long)lookup;
// value reads back through sprintf+uart as '536874692'
// which couldnt be a valid memory address!
Я мог бы просто сдаться и добавить переменную-указатель в структуру
EDIT:
Я хотел избежать добавления указателя в структуру, потому что мне пришлось бы вернуться и переписать функции чтения / записи флэш-памяти, чтобы также сохранить указатель. Они довольно сложные и в настоящее время работают, поэтому я бы не стал их трогать!