__cdecl和__stdcall

VC++默认采用__cdecl的调用方式。
C方式编译下:
     __cdecel 函数修饰符格式"_函数名"
     __stdcall函数修饰符格式"_函数名@参数字节数"
C++方式编译:
     _cdecl:函数名前“?”表示开始,函数名后跟 @@YA表示参数表开始,函数表代号表示如下:
X表示VOID,D表示CHAR,E表示unsigned char,F表示short,H表示int,I表示unsigned int...参数表第一项表示函数的返回值类型,其后一次为参数的类型。参数表最后以“@Z”标识整个名字的结束。如果该函数无参数,则以“Z”结束。比如?TestC@@@YAHH@Z
        __stdcall和__cdecl类似,用@@YG表示参数表的开始。
虽然C++的函数名称修饰方式比较复杂,但是可以支持函数重载。
可以在函数名前加入extern "C"强制采用C的函数名称修饰方式。

 

利用编译器内部变量__cplusplus进行条件编译:

 #ifdef __cplusplus

   extern "C" {

  #endif

  ...

  ...

 #ifdef __cplusplus

   }

  #endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值