Я вынужден использовать стороннюю библиотеку доступа к ключу, которая предоставляет включаемый файл 'sense4.h' со следующим кодом:
#if !defined _WINDOWS_
#define WINAPI
#define CONST const
typedef unsigned char UCHAR;
typedef unsigned short USHORT;
typedef unsigned int UINT;
typedef unsigned long ULONG;
typedef char CHAR;
typedef char TCHAR;
typedef void VOID;
...
#endif /* !defined _WINDOWS */
...
unsigned long WINAPI S4Startup(
VOID
);
unsigned long WINAPI S4Cleanup(
VOID
);
...
Проблема в том, что g++ 4.6.1 жалуется на строки кода, где используется typedefed VOID:
sense4.h:375:9: error: ‘’ has incomplete type
sense4.h:376:1: error: invalid use of ‘VOID {aka void}’
sense4.h:383:9: error: ‘’ has incomplete type
sense4.h:384:1: error: invalid use of ‘VOID {aka void}’
Могу ли я что-нибудь сделать, не изменяя включаемый файл 'sense.h', чтобы мой проект компилировался с помощью g++?
Я обнаружил, что в разделе 18 C++ Standard Core Language Closed Issues, Revision 30говорится:
Если пункт объявления параметра пуст, функция не принимает аргументы. Список параметров (void) эквивалентен пустому списку параметров.
Можно ли использовать typedef для void вместо типа void в списке параметров?
Обоснование: IS уже ясно, что это не разрешено.