C++ Unix是用C还是C++;或者两者都有?

C++ Unix是用C还是C++;或者两者都有?,c++,c,unix,C++,C,Unix,Unix中的许多系统调用使用重载和默认变量。这个概念在C中是不存在的,所以UNIX在C++中也被编码了,对吗?< /P> < P>我不知道你指的是哪个系统,但我敢打赌,大多数UNIX EE操作系统都是用C语言编码的。系统调用可能只不过是C++包装。< P> UNIX系统通常是用C语言编码的,并且由于某些原因,大多数UNIX开发人员也似乎不喜欢C++。 Unix的所有主要版本的内核都使用纯C。(嗯,Mac OS X在一个接口中有一点C++) 如果不算桌面层,那么除了少数例外,核心库和实用程序也是用

Unix中的许多系统调用使用重载和默认变量。这个概念在C中是不存在的,所以UNIX在C++中也被编码了,对吗?< /P> < P>我不知道你指的是哪个系统,但我敢打赌,大多数UNIX EE操作系统都是用C语言编码的。系统调用可能只不过是C++包装。

< P> UNIX系统通常是用C语言编码的,并且由于某些原因,大多数UNIX开发人员也似乎不喜欢C++。 Unix的所有主要版本的内核都使用纯C。(嗯,Mac OS X在一个接口中有一点C++) 如果不算桌面层,那么除了少数例外,核心库和实用程序也是用C编写的。我唯一能想到的核心工具是用C++编写的:<代码> GROOF
现在,对于软件包来说,情况就不同了……

当你谈论Unix-y操作系统的内核时,比如Linux、Solaris、Mac OS X、NetBSD、FreeBSD等,它们通常都是C。我也不知道你所说的重载或默认变量是什么意思——当然不是在内核调用中

当DigitalRoss说Mac OS X在内核源中有目标C时,我很惊讶,所以我下载了MaOS OS X.62.2版本的达尔文XNU内核源代码,实际上,没有目标C。但是,我发现稍微有点震惊,发现了一个小的C++。 无论如何,“用户空间”(非内核)程序所依赖的很多东西,比如虚拟内存、异常处理、设备I/O等等,都是由内核完成的。但是内核不能将自己用于这些事情,就像你不能用手捡起鞋子把自己举到空中一样

面向对象的语言,如C++和Objic C,广泛地使用了内核不能为自己做的事情。这就是为什么内核大部分是用C编写的。在C++中,我看到了XNU源代码,我确信它是非常、非常细致地编写的,以避免在内核中做不安全的事情。


至于用户空间程序是用C + C++编写的,我认为它主要是传统的、个人的偏好和人们习惯的东西。作为精通这两种语言的人,我认为这是相当愚蠢的。

< P> <强>绝对c>强>尝试<代码>人系统代码> />代码>或代码> man -S2读取< /C> >,这给了你C库接口,没有C++ C++。

< P> UNIX是1969在贝尔实验室首先创建的,在C++被构思之前。(Src:),您可以通过阅读或(从FreeBSD)中提供的(类似于)来确认这一点。或者是来自非常古老的贝尔实验室/AT&T版本的档案

< Bjarne Stroustrup >在大约1983中创建了C++,在此之前,他曾用“C类”进行了研究。从比亚恩·斯特罗斯特普那里得到证实,C和类的最早日期是1979年


我希望澄清UNIX是基于C++的想法是不可能的。请注意,面向对象语言已经出现,所以不要混淆对象和类与C++。< /P> < P>几个OS内核已经用C++编写。我相信内核(例如一个例子)是专门写在C++中的(几乎是)(它有点像Mach:一个微内核,它几乎完全通过UNIX仿真器运行,它是作为一个用户模式服务器运行的)。
在C++中也有一些其他的半实验系统。最近的一种被命名为Hybrid。一个更老的版本在几年前发布在Cop.Sux.MISC()上,我敢肯定,它需要花费大量的工作来编译它,并用当前的C++编译器编译。这一个在虚拟机上运行,包括模拟硬件的源代码。

当你说“UNIX”时,你指的是哪个操作系统?UNIX现在是一个商标,而不是一个操作系统。哪些系统调用重载或具有默认参数?具有重载/默认参数的系统调用是奇怪的
ioctl()
就是这样一个概念——它还有一个额外的优点,就是没有标准化。您可以认为“2参数vs 3参数
open()
”是一种重载/默认参数机制。其他一些更为深奥的系统调用与这些稍有相似。但是,“很多”对我来说是一种夸张。<代码> pTraceE()/C++ >是另一个古怪的东西,但越少越好,……代码> iC++(<代码)>和<代码>()>代码>使用VARARGS,而不是函数重载。这使得系统的不同部分之间的兼容性更加容易。并不是说他们不喜欢C++,而是因为有历史和技术的原因来选择C。莱纳斯Tovalds不喜欢C++,但这只对一个(非常重要的)系统来说是重要的。我不知道在UNIX上开发的其他人有多少不喜欢C++。有些人做了很多,但很多人不这么认为。”戴维:虽然他最近似乎没有做过很多的发展,但Eric S. Raymond的观点似乎相当有影响力,他在很多方面的反讽(主要是不明智的废话),关于C++中的(假设)问题。东芝:C实际上没有标准的ABI。它所具有的是最低要求,因此在任何给定硬件上为其设计ABI通常都非常简单。一旦主供应商设计了一个,大多数其他供应商通常都会遵循它。用C++,ABI会做更多的工作,并给更多的机会来解决差异。但实际结果仍然是,互操作性要容易得多,所以无论它是如何发生的,我都支持它!)为了澄清,Mac OS X中的C++仅用于IOKit,即设备驱动程序接口。马赫和BSD层是直的C。我知道iOKIT,但不知道C++是否在别处使用。谢谢你的来信;我稍微调整了措辞。事实上,UNIX是在196年创建的