c++编译后的函数名 - .cpp文件编译成.o文件后,函数名称的变化

news/2024/12/27 19:43:03/

ar::start::initial:start(int a,int b),经过编译成.o后,变成了什么名称?

 

c++编译后的函数名

c++源代码,编译时,函数名会被编译器修改,变成编译器内部的名字(名字规则由编译器定义)。

修改后的名字,会在链接时用到。

linux g++,翻译规则:


每个方法都是以_Z开头,对于嵌套的名字(比如名字空间中的名字或者是类中间的名字,比如Class::Func)后面紧跟N , 然后是各个名字空间和类的名字,每个名字前是名字字符的长度,再以E结尾。(如果不是嵌套名字则不需要以E结尾)

 

c++filt 工具,将编译后的函数名,翻译成源码函数名

 

实例:

源码:

TunApplication_base.cc:(.text+0x40c): undefined reference to `vkn::com::Runtime::getInstance()

include/vkn/com/runtime.h

  /*!
    * \brief Returns an instance of Runtime class
    * \return Runtime instance
    */
  static Runtime& getInstance();

二进制库:

objdump -D libvkn.a

0000000000002464 <_GLOBAL__sub_I__ZN3vkn3com7Runtime11getInstanceEv>:
    2464:       a9bf7bfd        stp     x29, x30, [sp, #-16]!
    2468:       910003fd        mov     x29, sp
    246c:       529fffe1        mov     w1, #0xffff                     // #65535
    2470:       52800020        mov     w0, #0x1                        // #1
    2474:       97ffff2a        bl      211c <_Z41__static_initialization_and_destruction_0ii>
    2478:       a8c17bfd        ldp     x29, x30, [sp], #16
    247c:       d65f03c0        ret

 


http://www.ppmy.cn/news/317376.html

相关文章

Linux - nm命令

这里的nm命令指的是GNU Linux版本&#xff0c;Ubuntu20.04&#xff0c;是name的缩写。 nm是一个命令行工具&#xff0c;用来列出object文件、库文件或可执行文件中的符号列表(name list, the symbol table of nlist structures)。 nm命令的输出结果为三列&#xff0c;symbol vi…

endl与\n的区别

看C++Primer的时候看到的,然后去百度了一下; 比较明白的解释: 1、区别在于: \n只代表换行的转义字符 endl除了代表换行,还紧跟着清出缓冲槽2、接下来我们看一下具体内容的辨析: 要明白\n和endl的区别,首先要明白一个概念: 输出流。 目前输出流的类型很多,有对文件作为目…

linux下nm,objdump和ldd三大工具使用

linux下进行C/C开发时经常需要使用nm&#xff0c;objdump&#xff0c;ldd工具来分析定位问题&#xff0c;本篇文章就对其做个总结&#xff1a; 1.测试程序 TestSo.h #pragma once #include <iostream>extern "C" int CTypeAdd(int x, int y); extern "…

SAP MM(物料管理)常用事务代码T-Code

MM01 - 创建物料主数据 XK01 - 创建供应商主数据 ME11 - 创建采购信息记录 ME01 - 维护货源清单 ME51N- 创建采购申请 ME5A - 显示采购申请清单 ME55 - 批准采购申请&#xff08;批准组&#xff1a;YH&#xff09; ME57 – 分配并处理采购申请 MB21 - 预留 MB24 - 显示…

【图像去模糊】Rethinking Coarse-to-Fine Approach in Single Image Deblurring

论文地址&#xff1a;https://arxiv.org/pdf/2108.05054.pdfhttps://arxiv.org/pdf/2108.05054.pdf 代码地址&#xff1a;https://github.com/chosj95/MIMO-UNethttps://github.com/chosj95/MIMO-UNet 粗到精细的策略已被广泛应用于单个图像去模糊网络的体系结构设计。传统的方…

数仓总结题

面试可能会遇到的问题 数仓怎么设计&#xff1f; 数仓分为ODS层&#xff0c;DW层和DM层&#xff0c;ODS层从数据源抽取数据&#xff0c;对数据进行清洗&#xff0c;并将数据加载到中间表。DW层通过维度建模建好事实表和维度表&#xff0c;将ODS层的数据加载到事实表和维度表中…

稳压二极管型号对照表

美标稳压二极管型号 1N4727 3V0 1N4728 3V3 1N4729 3V6 1N4730 3V9 1N4731 4V3 1N4732 4V7 1N4733 5V1 1N4734 5V6 1N4735 6V2 1N4736 6V8 1N4737 7V5 1N4738 8V2 1N4739 9V1 1N4740 10V 1N4741 11V 1N4742 12V 1N4743 13V 1N4744 15V 1N4745 16V 1N4746 18V 1N4747 20V 1N4748…

小师妹问沃什么是可执行程序?(全网最简洁,必看,错过后悔终生!!!)

相信很多同学知道Windows下的可执行程序是*.exe&#xff0c;但是除了*.exe之外&#xff0c;Windows下动态库*.dll和*.lib也是可执行程序。不过&#xff0c;小师妹问沃的是什么是Linux下的可执行程序&#xff1f; 为了不让小师妹伤心&#xff0c;师兄沃再次拿起《程序员的自我修…