Я использую Visual Studion 2010 и получил следующий пример функции, полученный из WinGDI.h:
__gdi_entry WINGDIAPI int WINAPI AbortDoc(__in HDC hdc);
Есть ли способ объявить указатель на функцию этого типа, или, возможно, поместить его в определение типа. Например:
AbortDoc() MyAbortDocPtr;
typedef AbortDoc AbortDocType;
Очевидно, что они не являются синтаксически правильными и не будут компилироваться, и, может быть, я хочу, чтобы я вообще не мог этого сделать. Тем не менее, существует решение, в котором вы можете вручную заклинить каждый typedef следующим образом:
typedef int (WINAPI *AbortDocType)( HDC hdc );
Я использовал это, и оно работает для меня, но ....
- Это утомительно, особенно если вы делаете это для 100 процедур.
- Потому что это утомительно и подвержено ошибкам, и вы могли бы ошибиться в подписи и не знать ее, пока не обработает ошибочный код случайный случай.
- В случае изменения базовых подписей в заголовочном файле вы несете ответственность за выяснение того, какие из них были изменены, и исправление их. Это означает ручную проверку всех подпрограмм и просто захват нового заголовочного файла и перекомпиляцию.
Кто-нибудь знает, как я могу использовать предопределенные объявления функций в typedefs или просто использовать исходное объявление как typedef для объявления нового указателя функции?