Кажется, я часто трачу слишком много времени, пытаясь получить макроС#define, чтобы сделать именно то, что я хочу. Я напишу свою текущую дилемму ниже, и любая помощь будет оценена. Но действительно ли большой вопрос заключается в том, есть ли какая-нибудь полезность, которую кто-то может рекомендовать, чтобы быстро отобразить, что делает макрос? Похоже, что даже медленный процесс проб и ошибок будет намного быстрее, если я смогу понять, что не так.
В настоящее время я динамически загружаю длинный список функций из созданной мной DLL. То, как я это задал, указатели на функции имеют те же самые имена, что и экспортированные функции, а typedef (s), используемые для прототипа, имеют одинаковые имена, но с добавленным подчеркиванием. Поэтому я хочу использовать define для упрощения присваивания длинного длинного списка указателей функций.
Например, в приведенном ниже примере кода "hexdump" - это имя точки функции typedef'd, а также имя функции, а _hexdump - это имя typedef. Если GetProcAddress() терпит неудачу, счетчик сбоев увеличивается.
if (!(hexdump = (_hexdump)GetProcAddress(h, "hexdump"))) --iFail;
Итак, скажем, я хотел бы заменить каждую строку, как показано выше, макросом, как это...
GETADDR_FOR(hexdump )
Хорошо, это лучшее, что я придумал до сих пор. Это не работает (мой//комментарий только для предотвращения форматирования текста в сообщении)...
// #define GETADDR_FOR(a) if (!(a = (#_#a)GetProcAddress(h, "/""#a"/""))) --iFail;
И снова, пока я бы оценил, какую глупую ошибку я сделал, это заставит мой день иметь утилиту, которая покажет мне ошибку моих способов, просто подключив мой макрос.