读书人

关于extern quot;Cquot;跟_stdcall的区别

发布时间: 2013-10-16 11:29:46 作者: rapoo

关于extern "C"和_stdcall的区别
DLL的导出函数一般设置为如下:
extern "C" int _stdcall Func(int n);
这里有一点不明白,extern "C"是按C的编译方式编译函数名,而又限定为_stdcall的调用,则又按c++的方式编译函数名?!
这两个到底怎么区别?!
[解决办法]
_stdcall不是C++独有的。
[解决办法]
_stdcall 用来指定函数调用方式问题 比如 参数从右到左压入栈中
[解决办法]
两者毫无关联,
extern "C"是以C语言的方式编译,而_stdcall只是一种调用约定方式,指的就是参数入栈规则而已。
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

两者毫无关联,
extern "C"是以C语言的方式编译,而_stdcall只是一种调用约定方式,指的就是参数入栈规则而已。

extern "C"只和符号如何导出有关系。函数内部用什么语言编译是完全没关系的。你在extern "C"函数里玩template玩class没人拦你。
++


template 不可以出现在extern "C"内部,或者后面
因为C的名字是固定的,只能是同一个名字。

错误信息如下:
error: template with C linkage

好吧 !
class 可以是 extern "C"的

读书人网 >C++

热点推荐