![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
хочется записать объявление и инициализацию bar в 1 строчку вот такой вариант, хоть и в 1 строчку, но длинный и не красивый void (*bar)(int) = (void(*)(int))GetProcAddress(); |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
позвольте узнать, чем не подходит такое :
придераюсь: объявление (хотя лучше определение) и присвоение Это сообщение отредактировал(а) mes - 29.3.2010, 18:43 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
mes, не подходит, т.к. потом при вызове bar мне придется кастовать ее к ее сигнатуре
((void(*)(int))*bar)(100); Это сообщение отредактировал(а) GoldFinch - 29.3.2010, 18:47 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Я всегда объявляю типы для функций:
typedef void (*FDoSomething)(int); Тогда и объявление и получение выглядят вполне прилично: FDoSomething bar = (FDoSomething) GetProcAddress(); -------------------- ... |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
Earnest, не хотеть в 2 строчки! хотеть в 1 строчку!
я хочу сделать импортируемые функции глобальными переменными, импортировать их 1 раз, и по этому мне не нужны отдельно их типы |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| GoldFinch |
|
||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
счя набросал вот такой кодес, вроде выглядит красиво
Добавлено через 21 секунду mes, да) Добавлено через 2 минуты и 16 секунд а еще лучше вот так
|
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Ну ты капризный...
По-другому (чем ты уже писал) в одну строчку не получится. Ну можно еще макросами. Т.е. раскрывать будет как у тебя, а в коде будет примерно так: DECLARE_FUNCTION (void (*)(int), bar, "NameForGetProcAddress") Так тебе красиво? -------------------- ... |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
Earnest, не, макросами не красиво
хотя для случаев когда нет (boost|tr1)::function - подойдет |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
осталось только победить __stdcall =\
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
угу, (boost|tr1)::function не поддерживает stdcall, использовать bind который поддерживает stdcall - это малость оверхед, да и сам function - немалый оверхед (~32байта на указатель)
а свои классы выглядят страшно %)
|
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
угу, а что разве такое не работает ? :
сорри за грязный код..сейчас времени больше нет Это сообщение отредактировал(а) mes - 29.3.2010, 22:59 |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
хм... про operator T я не подумал
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |