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

 
 
> Засада с указателями на функцию.
-Игорь-
сообщение 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



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:55
Рейтинг@Mail.ru


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