Доступ к строке C из фиксированного местоположения Flash - PullRequest
0 голосов
/ 11 декабря 2010

Я определил строку в местоположении 0xAABB:

const char str[] = "Hi There";  
const word _Str1 @0xAABB = (word)str;

Теперь я хочу получить доступ к этой строке, расположенной в 0xAABB.Каков синтаксис C для этого?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2010
#define ADDRESS_OF_YOUR_STRING  ((const char *)0xAABB)

const char *pointer_to_your_string = (const char *)0xAABB;

Я мог бы использовать макрос в определении указателя, но на самом деле они предназначены для демонстрации того, как это сделать. Если вы поместите версию макроса в заголовочный файл и будете использовать ее в своем коде, компилятор сможет оптимизировать его немного лучше. Если вы используете глобальную переменную-указатель для доступа к ней, вам может понадобиться компилятор, которому потребуется дополнительная загрузка указателя.

Использование обоих одинаково:

printf("%s\n", ADDRESS_OF_YOUR_STRING);

должно работать нормально, так как printf ожидает указатель на строку для %s.

0 голосов
/ 11 декабря 2010
Просто используйте указатель на место в памяти: const char * str = (const char *) 0xAABB;

Редактировать: (на основе вашего комментария) Сначала необходимо получить адрес из местоположения 0xAABB, а затем использовать это значение в качестве адреса строки:

const char *str = *(const char **)0xAABB;

Это будет разыменовывать указатель на 0xAABB для получения фактического строкового адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...