C/C++的Name Mangling

Posted YuRi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++的Name Mangling相关的知识,希望对你有一定的参考价值。

C语言
规则:

1、__cdecl
在此声明方式下,仅仅在函数名前加一个下划线,至于函数返回值、参数,完全没有处理。
2、__stdcall
在此声明方式下,在函数名前加一个下划线,然后紧跟“@”符号,最后是函数参数大小总和(注意:此总和包含了字节填充)。
3、__fastcall
在此声明方式下,跟 __stdcall 唯一不同的是,函数前面的下划线变为了“@”符号。

函数

1、void __CALLTYPE f();
2、int __CALLTYPE f();
3、int __CALLTYPE f(int);
4、double __CALLTYPE f(int, double);
5、int* __CALLTYPE f(int*, char*);

__cdecl

1、_f
2、_f
3、_f
4、_f
5、_f

__stdcall

1、[email protected]
2、[email protected]
3、[email protected]
4、[email protected]
5、[email protected]

__fastcall

1、@[email protected]
2、@[email protected]
3、@[email protected]
4、@[email protected]
5、@[email protected]


C++语言

以上是关于C/C++的Name Mangling的主要内容,如果未能解决你的问题,请参考以下文章

C语言中利用scanf语句输入多个值的问题

三大语言实例 (python,C/C++,Java)

求助在linux下用c语言取得双网卡的网关地址

JAVA怎样重载操作符?

C语言和ARDUINO语言一样吗

C语言数组问题?