描述
我在调用台达电机的API时,编译工程失败,在官方提供的"AdvMotApi.h"文件报了下面两种错误
expected ';' after top level declarator”
expected initializer before 'Acm_DevOpen'
错误报了2000多个,'Acm_DevOpen’是很多函数的名字,我这里只列了一个举例
解决方案
阅读代码时,我发现可能是下面代码造成的
#ifndef ADVCMNAPI
#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
#define ADVCMNAPI __stdcall
#endif
#endif
因为在之后定义的函数,都是类似于这样的构造
U32 ADVCMNAPI Acm_DevOpen(U32 DeviceNumber, PHAND DeviceHandle);
我觉得是没有进入#if段落,导致ADVCMNAPI没有被定义。但原因我暂时不清楚。我简单的在#endif后添加了定义,也就是将define那句复制到了endif后,确保这个变量被定义。
#ifndef ADVCMNAPI
#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
#define ADVCMNAPI __stdcall
#endif
#endif
#define ADVCMNAPI __stdcall // 新添加
问题得到了解决
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)