当前位置: 首页 > backend >正文

c++命名空间的作用及命名改编

c++命名空间的作用及命名改编

命名空间

namespace的作用:

std::命名空间,命名空间(namespace)是 C++ 中用于解决标识符命名冲突问题的机制。在大型程序开发中,不同模块可能会使用相同名称的变量、函数或类等标识符,命名空间将这些标识符封装在不同的逻辑区域内,避免了命名冲突

访问命名空间中元素的三种方式

使用命名空间前缀::

#include <iostream>
int main() {std::cout << "Hello, World!" << std::endl;return 0;
}

使用using namespace声明(不建议用这种,尤其不要在头文件中用,如果源文件中引用了该头文件也会把头文件中的命名空间带过来,从而造成潜在冲突风险)

#include <iostream>
using namespace std;
int main() {cout << "Hello, World!" << endl;return 0;
}

使用using声明单个元素

#include <iostream>
using std::cout;
using std::endl;
int main() {cout << "Hello, World!" << endl;return 0;
}

命名改编(name mangling)

nm ./main.cpp.o | c++filt -t

这条命令的作用就是列出main.cpp.o目标文件中的符号表信息,并将其中命名改编后的符号名解码成人类可读的 C++ 符号名及类型信息,方便开发者查看和分析目标文件中的符号,了解代码在编译后的实际情况,比如函数的真实名称、参数类型等,这对于调试、分析链接错误以及理解代码的底层实现非常有帮助

链接器在将多个目标文件链接成可执行文件或库时,需要确保不同文件中的符号能够正确匹配和链接。命名改编后的名称具有唯一性和确定性,使得链接器能够准确地找到并链接各个符号,避免符号冲突和链接错误。例如,在多个源文件中都使用了标准库中的函数,通过命名改编,链接器可以将这些函数的调用与标准库中正确的函数实现进行链接。

http://www.xdnf.cn/news/8640.html

相关文章:

  • 数据结构第七章(五)-散列表
  • BLIP3-o:理解和生成统一的多模态模型
  • Java 垃圾回收
  • 打卡day35
  • 产品经理常用术语大全
  • 《企业级日志该怎么打?Java日志规范、分层设计与埋点实践》
  • JWT笔记
  • 如何进行Appium实现移动端UI自动化测试?
  • 解决 Supabase “permission denied for table XXX“ 错误
  • python模块管理环境变量
  • Kafka + Flink + Spark 构建实时数仓全链路实战
  • 如何评价OpenRouter这样的大模型API聚合平台?
  • AI硬件革命:OpenAI“伴侣设备”——从概念到亿级市场的生态重构
  • c++类与对象(二)
  • 您的浏览器不支持摄像头API—仙盟创梦IDE
  • 浅析Spring AOP 代理的生成机制
  • 为什么要使用线程池
  • 【概率论基本概念01】点估计
  • 《P3435 [POI 2006] OKR-Periods of Words》
  • 【Linux网络篇】:Socket网络套接字以及简单的UDP网络程序编写
  • 【Node.js】高级主题
  • 【Linux 学习计划】-- git 在Linux远端服务器上的部署与简单使用
  • LABVIEW 通过节点属性动态改变数值显示控件的方法
  • TypeScript入门到精通
  • 【Leetcode 每日一题】2942. 查找包含给定字符的单词
  • 机器学习算法-sklearn源起
  • 语音合成之十六 语音合成(TTS)跳跃与重复问题的解析:成因、机制及解决方案
  • Mac的显卡架构种类
  • 进程间通信I·匿名管道
  • 软考中级软件设计师全真题