我正在为指纹扫描仪使用 SDK,并且我已将它们的所有头文件添加到我的项目中。在头文件中,他们使用了大量似乎不起作用的 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 的新手,所以我不知道为什么,但我将它们的头文件复制并粘贴到新的头文件中(因为它不允许我编辑它们)和 BOOL, BYTE, WORD
类型现在可以了,但是 __int8, __int16, etc.
没用。我添加了 <stdint.h>
现在一切正常。
谢谢大家!
最佳答案
BOOL
、CHAR
、LPSTR
和类似的全大写类型(通常)是 Microsoft-defined types .文档说明了需要哪些 header 才能获得正确的定义。
关于c++ - 使用 SDK,他们的头文件使用不命名类型的 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28076700/