![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
金证杂记
文章平均质量分 80
Pris_oner
这个作者很懒,什么都没留下…
展开
-
C++ 调用C
首先,为什么要使用extern "C"修饰符? C++调用其它语言的函数,由于编译器生成函数的机制不一样,所以需要经过特殊处理,才可以调用。调用C语言的函数,需要在函数声明的地方语句extern "C"。如果不使用该语句,在链接的时候,编译器就会报以下这种错误。 Test.obj : error LNK2019: 无法解析的外部符号 "void __cdecl DeleteStack(转载 2016-11-21 14:17:21 · 288 阅读 · 0 评论 -
__stdcall,__cdecl,__fastcall的区别
一、三者区别一览表 __stdcall __cdecl __fastcall 参数传递方式 右->左 压栈 右->左 压栈 左边开始的两个不大于4字节(DWORD)的参数分别放在ECX和EDX寄存器,其余的参数仍旧自右向左压栈传送 清理栈方 被调用函数清理(即函数自己清理转载 2016-11-21 14:51:45 · 265 阅读 · 0 评论 -
名字修饰约定extern "C"与extern "C++"浅析
所谓名字修饰约定,就是指变量名、函数名等经过编译后重新输出名称的规则。 比如源代码中函数名称为int Func(int a,int b),经过编译后名称可能为?Func@@YAHHH@Z、?Func@@YGHHH@Z、_Func@8,也有可能与源代码中名称相同为Func。 影响编译后输出的名称通常与名字修饰约定(extern "C"、extern "C++"等)和函数调用约转载 2016-11-21 15:17:21 · 282 阅读 · 0 评论