C++ 概念中的名称修饰与 Extern "C"

2024 年 8 月 28 日 | 3 分钟阅读

我们知道,C++ 编程语言功能强大,是业界广泛用于游戏机开发的编程语言。它支持重载功能,这意味着我们可以定义多个同名但参数不同的函数,编译器能够将它们映射为独立的实体。

相比之下,当函数名称相同但参数不同时,我们使用名称修饰(name mangling)方法来映射这些同名函数,让编译器将它们理解为不同的对象。该方法会向任务中添加额外的信息,使其有所区别。因此,本地或在线编译器在运行它们时不会产生混淆。

C++ 代码

输出

G ++ / t m p/F mT y bF gU rL. cpp
/usr/bin/ld: cannot open output file a.out: Permission denied
collect2: error: ld returned one exit status 

C++ 代码

输出

G ++ / t m p/F mT y bF gU rL. cpp
/usr/bin/ld: cannot open output file a.out: Permission denied
collect2: error: ld returned 1 exit status

C++ 代码

输出

g++ /tmp/FmTybFgUrL.cpp
/usr/bin/ld: cannot open output file a.out: Permission denied
collect2: error: ld returned 1 exit status

C++ 编程语言中的 Extern "C"

C++ 代码

输出

G ++ / t m p/F mT y bF gU rL. cpp
javaTpoint.com

stdio.h, string.h 文件中的 C 风格声明

C++ 代码

输出

G ++ / t m p/F mT y bF gU rL. cpp
/usr/bin/ld: cannot open output file a.out: Permission denied
collect2: error: ld returned 1 exit status