powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Указатель на функцию по прототипу
6 сообщений из 6, страница 1 из 1
Указатель на функцию по прототипу
    #39755712
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то сходу не нагуглилось...

Обычно при объявлении указателя на функцию (скажем, для динамической загрузки из DLL)
повторно пишут полностью её прототип:
Код: sql
1.
void (*foo_p)(int)


Но это создаёт неудобство: при изменении прототипа функции его надо не забыть поменять в
двух местах (или точнее даже в трёх, включая реализацию). А есть ли способ объявить
указатель на ранее объявленную функцию? Что-нибудь типа
Код: sql
1.
2.
3.
4.
5.
void foo(int);

typedef *foo foo_p;

foo_p bar = impl;


В идеале бы ещё и реализацию impl тоже построить на этой базе, без макросов типа
Код: sql
1.
#define FOO_IMPL(name) void name(int)



Чтобы поменял в одном месте прототип и всё остальное автомагически начало ему соответствовать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Указатель на функцию по прототипу
    #39755719
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таки нагуглилось частично:
Код: sql
1.
2.
3.
4.
5.
typedef void foo(int);
typedef foo* foo_p;
foo impl;

foo_p bar = impl;


Но на реализацию по-прежнему только макрос.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Указатель на функцию по прототипу
    #39755723
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНо на реализацию по-прежнему только макрос.
и правильно, это довольно опасно
так хоть компилятор ошибку покажет при попытке неправильного использования
...
Рейтинг: 0 / 0
Указатель на функцию по прототипу
    #39755753
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Можно еще так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void foo(int)
{
 ....
}
typedef decltype(foo)* foo_p;

foo_p fp = foo;
...
Рейтинг: 0 / 0
Указатель на функцию по прототипу
    #39755767
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyМожно еще так:

Вот оно! Теперь можно не мучиться с копипастом объявлений при динамической загрузке
библиотек. Спасибо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Указатель на функцию по прототипу
    #39755787
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,
прикольно

странно конечно намешали си-стиль
имхо как-то без указателя было бы более плюсануто
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Указатель на функцию по прототипу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]