首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于extern "C"跟_stdcall的区别

2013-10-16 
关于extern C和_stdcall的区别DLL的导出函数一般设置为如下: extern C int _stdcall Func(int n)这里

关于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"的

热点排行