реклама на сайте
подробности

 
 
> Засада с указателями на функцию.
-Игорь-
сообщение Jun 30 2014, 07:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-10-11
Пользователь №: 67 615



При любом объявлении и использовании указателя на функцию, адрес функции записывается со смещением на один байт. Т.е. если например адрес функции 080021ac то указатель на функцию инициализируется как 080021ad.
Пробовал функции с аргументами и без, объявлял через typedef и без. Инициализировал указатели в коде и в массиве указателей. Пробовал компилятор:
gcc version 4.8.4 20140526 (release) [ARM/embedded-4_8-branch revision 211358] (GNU Tools for ARM Embedded Processors)
последней и предпоследней версии. Пробовал компилятор от Ментор График:
arm-none-eabi-gcc (Sourcery CodeBench Lite 2014.05-28) 4.8.3 20140320 (prerelease)
Результат один и тот же.

На данный момент объявление делаю так:
typedef uint_fast16_t (*FUNC)(uint_fast16_t);
FUNC func;

Сижу под убунтой: Ubuntu 12.04.4 LTS
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
-Игорь-
сообщение Jun 30 2014, 08:11
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-10-11
Пользователь №: 67 615



Спасибо за оперативные ответы. Не ожидал. Буду знать.
Цитата(Genadi Zawidowski @ Jun 30 2014, 11:26) *
А в чём проблема-то? Какое дело программисту, что за значение там лежит, если его получили корректным способом?

Проблема в моем коде, теперь это точно понятно. Буду искать ошибку. Спасибо.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th August 2025 - 07:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016