linux的命名空间到底是什么,一直搞不懂?C语言名字空间究竟是什么?

 2024-04-24 13:42    194  

抽象的概念。看了一下别人的解析,写一下:

从Linux 2.6.24版的内核开始,Linux 就支持6种不同类型的命名空间。(具体也没记住)

命名空间是一种轻量级的虚拟化手段;

传统的虚拟化软件,是虚拟化多个不同的操作系统,对共享资源的限制很大;

通过提供命名空间,可以让进程与进程之间,用户与用户之间彼此看不到对方。

命名空间,相当于容器。

命名空间,本质上建立了系统的不同视图。


Visual Studio

二、图形命名空间 System.Drawing 这个主要的GDI+命名空间定义了许多类型,实现基本的绘图类型(字体,钢笔,基本画笔等)和无所不能的Graphics对象. System.Drawing2D 这个命名空间提供高级的二维和失量图像功能

防止名字冲突。没有名字空间的旧时代里,大家的名字都在一个锅里面,各个项目之间起名字都得自己注意这点,张三弄了个棒槌得自己注意取名叫张三_棒槌,李四弄了个棒槌叫李四_棒槌,不然张三李四俩人一人一个棒槌就会发生名字冲突,这俩项目就没法编译到一起了。当然,有很多人根本不介意这套,另外也有人想要重新使用一些别的依赖库甚至标准库已经用掉的名字,没有名字空间这个都做不到。

名字空间就是解决这个问题的。在C++里标准库的所有名字都在std下,同时除非你想被喷死否则一个像话的项目肯定也要把自己的所有名字放到项目的名字空间下,张三::棒槌、李四::棒槌、std::棒槌,都碰不到一起去,名字碰撞的问题就减轻了很多。当然更彻底的方式是java式的域名反序做包名,还可以避免两个项目想用同一个项目名/包名又导致冲突的问题,不过实际应用中有名字空间加上理性的代码风格基本还是可以解决问题的。

  •  标签:  

原文链接:https://www.weixinjn.com/baike/6733.html

=========================================

https://www.weixinjn.com/ 为 “微百科” 唯一官方服务平台,请勿相信其他任何渠道。

热门标签
友情链接