QT报错“expected ‘;‘ after top level declarator”和“expected initializer before ‘XXX‘”
描述我在调用台达电机的API时,编译工程失败,在官方提供的"AdvMotApi.h"文件报了下面两种错误expected ';' after top level declarator”expected initializer before 'Acm_DevOpen'错误报了2000多个,'Acm_DevOpen’是很多函数的名字,我这里只列了一个举例解决方案阅读代码时,我发现可能是下面代码造成的#
·
描述
我在调用台达电机的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 // 新添加
问题得到了解决
更多推荐



所有评论(0)