使用 SDK,他们的 header 文件使用不命名类型的 typedef
Using an SDK, their header files are using typedefs that do not name a type
我正在使用指纹扫描仪的 SDK,并且我已将他们所有的 header 文件添加到我的项目中。在 header 文件中,他们使用了大量似乎不起作用的 typedef。我正在使用 Eclipse,想知道这是否是问题所在。
例如:
#ifdef WIN32
typedef __int8 SecuAPI_SINT8;
typedef __int16 SecuAPI_SINT16;
typedef int SecuAPI_SINT32;
typedef __int64 SecuAPI_SINT64;
typedef BYTE SecuAPI_UINT8 ;
typedef WORD SecuAPI_UINT16 ;
typedef DWORD SecuAPI_UINT32;
BYTE、WORD、DWORD 抛出错误不命名类型。
其他好像还好。我尝试添加 winDef.h 和 windows.h header,但似乎没有用。
再往下看代码
typedef BOOL SecuAPI_BOOL;
typedef CHAR SecuAPI_CHAR;
typedef LPSTR SecuAPI_CHAR_PTR;
同样报错。
其他 typdef,例如 char、short、int 等似乎都可以工作。
编辑:
我是 C 的新手,所以我不知道为什么,但我将他们的 header 文件复制并粘贴到新的 header 文件中(因为它不允许我编辑他们的文件)和 BOOL, BYTE, WORD
类型现在可以了,但是 __int8, __int16, etc.
没有用。我添加了 <stdint.h>
,现在一切正常。
谢谢大家!
BOOL
、CHAR
、LPSTR
和类似的 entirely-capitalized-types(通常)是 Microsoft-defined types。文档说明需要 headers 才能获得正确的定义。
我正在使用指纹扫描仪的 SDK,并且我已将他们所有的 header 文件添加到我的项目中。在 header 文件中,他们使用了大量似乎不起作用的 typedef。我正在使用 Eclipse,想知道这是否是问题所在。
例如:
#ifdef WIN32
typedef __int8 SecuAPI_SINT8;
typedef __int16 SecuAPI_SINT16;
typedef int SecuAPI_SINT32;
typedef __int64 SecuAPI_SINT64;
typedef BYTE SecuAPI_UINT8 ;
typedef WORD SecuAPI_UINT16 ;
typedef DWORD SecuAPI_UINT32;
BYTE、WORD、DWORD 抛出错误不命名类型。
其他好像还好。我尝试添加 winDef.h 和 windows.h header,但似乎没有用。
再往下看代码
typedef BOOL SecuAPI_BOOL;
typedef CHAR SecuAPI_CHAR;
typedef LPSTR SecuAPI_CHAR_PTR;
同样报错。
其他 typdef,例如 char、short、int 等似乎都可以工作。
编辑:
我是 C 的新手,所以我不知道为什么,但我将他们的 header 文件复制并粘贴到新的 header 文件中(因为它不允许我编辑他们的文件)和 BOOL, BYTE, WORD
类型现在可以了,但是 __int8, __int16, etc.
没有用。我添加了 <stdint.h>
,现在一切正常。
谢谢大家!
BOOL
、CHAR
、LPSTR
和类似的 entirely-capitalized-types(通常)是 Microsoft-defined types。文档说明需要 headers 才能获得正确的定义。