gpt4 book ai didi

c - C语言中的名称

转载 作者:太空宇宙 更新时间:2023-11-04 00:04:12 25 4
gpt4 key购买 nike

根据我的内存,C 语言中没有使用 mangling 名称,这是我们为 ABI(应用程序二进制接口(interface))使用 C 函数所利用的一个特性。但最近我一直在阅读这篇关于在 C 中修改名称的文章

https://gustedt.wordpress.com/2011/06/24/name-mangling-in-c/

这里的问题是,如果在任何情况下编译器都会破坏 C 函数名?

最佳答案

由于 C 是一种不支持名称函数重载的编程语言,因此它不会进行名称重整。但对于针对 Microsoft Windows 平台的编译器,它具有各种调用约定,如 _cdecl、_stdcall 等。函数名称被破坏以提供有关调用约定的信息。

例如,

 int _stdcall fun(int myVar) {return 0;}
int _fastcall fun(int myVar){return 1;}
int _cdecl fun(int myVar){return 2;}

编译器(32 位)输出将是这样的:

 _fun@4  /* _(function_name)@(argument_size_in_bytes) */
@fun@4 /* @(function_name)@(argument_size_in_bytes) */
_fun /* _(function_name) */

关于c - C语言中的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30679641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com