Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2011, 19:45   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Вредные макросы

Код:
#define JGCharacterCreateFailSend ((void(*)(int aIndex, char* Name)) 0x0042D990)
Доброго времени суток Уважаемые гении, вообщем пытаюсь придерживаться ООП и мне не очень хочется использовать макросы в своем коде.
Данным методом я из под моей *.dll вызываю функцию из *.exe
Как бы вы заменили этот макрос в стиле ООП?
coNsept вне форума Ответить с цитированием
Старый 13.06.2011, 20:34   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Эмм, а почему адрес смещения указан? Не надо так делать.
Код:
class ExternalDll {
public:
  void JGCharacterCreateFailSend(int aIndex, char* Name) {
    ((void(*)(int, char*)) 0x0042D990)(aIndex, Name);
  }
};

...
ExternalDll::JGCharacterCreateFailSend(10, "Tom");
Имена сами подберёте
netrino вне форума Ответить с цитированием
Старый 13.06.2011, 20:38   #3
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Код:
typedef void*(*JGFNCPTR)(int aIndex, char* Name);
JGFNCPTR myExefnc;
myExefnc(0,"somename");
Вопрос то в чем?
Передать из exe адрес функции?
ООП наверное вообще непричем.

Последний раз редактировалось EUGY; 13.06.2011 в 20:42.
EUGY вне форума Ответить с цитированием
Старый 13.06.2011, 20:44   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Ну по этому адресу у меня функция расположена, вот поэтому и указываю ее явно чтобы добраться до нее. (Слышал, что не совсем это хорошо но другого варианта у меня нема ибо исходников exe у меня нет)
netrino твой вариант мне очень понравился тэнкс, спасибо и EUGY за вариант.

Цитата:
Вопрос то в чем?
Передать из exe адрес функции?
ООП наверное вообще непричем.
Угу, вызвать из под dll. Согласен, ну как я сказал выше, придерживаюсь строгого ООП.

Последний раз редактировалось coNsept; 13.06.2011 в 21:06.
coNsept вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
макросы Jana 001 Microsoft Office Excel 2 08.12.2010 22:16
Вредные учебники или ... mv28jam Свободное общение 21 27.01.2010 11:01
Макросы economist Microsoft Office Excel 4 21.08.2009 10:26
макросы С++ Lazio Помощь студентам 3 18.03.2009 23:38