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

 
 
> указатель на ф-ю, корректно ли делаю?
Метценгерштейн
сообщение Mar 1 2015, 18:25
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



объявил прототип
Код
typedef void (*timer_callback_t)(uint8_t);


теперь в структуре создаю переменную этого типа
Код
typedef struct  
{
...
...
    timer_callback_t     callback;
} timer_struct_t;


вот сама ф-я, в которую передается как параметр адрес другой ф-ии
Код
uint8_t timer_create(timer_mode_t _mode, uint32_t _time, timer_callback_t _callback)
{

}


пока не ругается компилятор.

А вот когда создаю прототип ф-ии timer_create, то сразу ошибка компиляции.
Так корректно обращаться с указателями на ф-ии?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Метценгерштейн
сообщение Mar 2 2015, 11:14
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



до дома доберусь, выложу исходники.
Пока что вопрос- мы можем в прототипе ф-ии в с99 не писать какая переменная а аргументе ф-ии? Т.е. только ее тип писать, как у меня в прототипе. Что-то вылетело. Не помню, как раньше делал.
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 2 2015, 11:39
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Метценгерштейн @ Mar 2 2015, 14:14) *
Пока что вопрос- мы можем в прототипе ф-ии в с99 не писать какая переменная а аргументе ф-ии? Т.е. только ее тип писать, как у меня в прототипе.


Можно. см. ISO/IEC 9899:1999 (E) параграф 6.7.5.3, пункты 6, 19
Но, IMHO, в прототипах это не нужно, их все равно по copy-paste делают обычно. А вот в описании типов указателей на ф-ции, вполне себе полезно, чтобы лишних букв не писать.

А проблема у Вас проста, как сибирский валенок. timer_mode_t надо определить ДО его использования в прототипе, а не после.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Mar 2 2015, 12:14
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Цитата(SM @ Mar 2 2015, 14:39) *
Можно. см. ISO/IEC 9899:1999 (E) параграф 6.7.5.3, пункты 6, 19
Но, IMHO, в прототипах это не нужно, их все равно по copy-paste делают обычно. А вот в описании типов указателей на ф-ции, вполне себе полезно, чтобы лишних букв не писать.

А проблема у Вас проста, как сибирский валенок. timer_mode_t надо определить ДО его использования в прототипе, а не после.

ну да, конечно )
Совсем глаз замылился уже)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   указатель на ф-ю   Mar 1 2015, 18:25
- - ViKo   А ошибку компилятора читающие должны угадать? Или ...   Mar 1 2015, 18:32
- - Xenia   На мой взгляд, подозрительным выглядит тип: timer_...   Mar 1 2015, 18:35
- - Метценгерштейн   я пока специально- для интриги- не стал ошибку ко...   Mar 1 2015, 18:55
|- - CrimsonPig   Цитата(Метценгерштейн @ Mar 1 2015, 18:55...   Mar 1 2015, 22:29
|- - Метценгерштейн   Цитата(CrimsonPig @ Mar 2 2015, 01:29) ...   Mar 2 2015, 06:41
|- - CrimsonPig   Цитата(Метценгерштейн @ Mar 2 2015, 06:41...   Mar 2 2015, 09:26
- - smalcom   Цитатаспециально- для интриги- не стал ошибку комп...   Mar 1 2015, 20:44
- - smalcom   С сохранением интриги(без исходников) проблематичн...   Mar 2 2015, 09:35
- - ViKo   Цитата(Метценгерштейн @ Mar 2 2015, 14:14...   Mar 2 2015, 11:24
|- - CrimsonPig   Цитата(ViKo @ Mar 2 2015, 11:24) По-моему...   Mar 2 2015, 11:46
- - SM   Цитата(Метценгерштейн @ Mar 2 2015, 15:14...   Mar 2 2015, 12:41


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 00:23
Рейтинг@Mail.ru


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