Лёш, указатель - просто 32ух битное число.
вот поэтому и не вижу ничего опасного и поэтому и спросил - есть ли подводные камни - может когда то на этапе компиляции где то споткнётся или ещё что то там
а использовать dwd я нигде не буду, я же присваиваю полученный адрес мемберу класса
*((DWORD*)(&m_FT_ListDevices))=dwd;
и забываю про dwd , а дальше пользуюсь
m_FT_ListDevices(параметры);
Вот это я ваще не понял:
*((DWORD*)(&m_FT_ListDevices))=dwd;
Может ты хотел вот так сделать:
m_FT_ListDevices=(tdf_FT_ListDevices)dwd;
так нет, именно так как я хотел, так и написал - тупо копирую из dwd в указатель на функцию, иначе компилятор кочевряжится ))
Проверкой я пытаюсь дать некую гарантию , что размер DWORD и указателя одинаковы
в общем, всё это я для чего удумал ? чтобы не описывать через typedef кучу мусорных типов (например tdf_FT_ListDevices) ,
а сделать проще:
FT_STATUS (WINAPI * m_FT_ListDevices)(PVOID, PVOID, DWORD);
DWORD dwd=(DWORD)GetProcAddress(m_hmodule,"имя_функции");
*((DWORD*)(&m_FT_ListDevices))=dwd;
ведь это можно загнать в макрос, после чего вообще красота:
FT_STATUS (WINAPI * m_F1)(PVOID, PVOID, DWORD);
FT_STATUS (WINAPI * m_F2)(PVOID, PVOID);
FT_STATUS (WINAPI * m_F3)(PVOID);
def_LoadFunc(m_F1,"имя_1_в_длл");
def_LoadFunc(m_F1,"имя_2_в_длл");
def_LoadFunc(m_F1,"имя_3_в_длл");
))