首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标记为‘`stdcall`’的函数不被识别为‘`stdcall`’

标记为‘`stdcall`’的函数不被识别为‘`stdcall`’
EN

Stack Overflow用户
提问于 2015-11-23 19:22:47
回答 1查看 39关注 0票数 0

我正在尝试从Visual 2013中的一个供应商构建此示例代码。示例中没有项目文件,只有源代码。

代码定义了一个回调函数SpatialDataHandler,它被标记为__stdcall。函数被传递给供应商的API函数,这需要一个__stdcall参数。然而,我得到了以下错误(编译为C):

代码语言:javascript
复制
Error   1   error C2440: 'function' : cannot convert from 'int (__cdecl *)(CPhidgetSpatialHandle,void *,CPhidgetSpatial_SpatialEventDataHandle *,int)' to 'int (__stdcall *)(CPhidgetSpatialHandle,void *,CPhidgetSpatial_SpatialEventDataHandle *,int)'    n:\phidget\spatial-capture\spazcap\spazcap.cpp  60  1   spazcap

该错误消息的tl;dr是:无法将cdecl函数参数转换为stdcall参数。(编译为C++本质上会产生相同的错误,但C2664而不是C2440。)我已经检查了文档,__stdcall关键字似乎在正确的位置,并且没有自己生成错误,所以WTH?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 20:29:14

__stdcall在宏中被定义为nothing。

代码语言:javascript
复制
#ifndef WIN32 
#define __stdcall
#endif

所以,VC又回到了_cdecl,这是默认的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33878935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档