windows - cmd.exe 是用哪种语言编写的?
问题描述
命令提示符,也称为 cmd.exe 或 cmd(在其可执行文件名之后),是 Windows NT、Windows CE、OS/2 和 eComStation 操作系统上的命令行解释器。它是 DOS 和 Windows 9x 系统中的 COMMAND.COM 的对应物(其中也称为“MS-DOS 提示符”),类似于在类 Unix 系统上使用的 Unix shell。
资料来源:维基百科
我到处搜索,但无法得到这个问题的答案。
每个网站都关注在cmd.exe中使用批处理语言的事实,但我找不到编写它的语言。
所以我的问题是:
在 Windows 中用于编写命令提示符或 cmd.exe 的语言是什么?
解决方案
该文件在文本编辑器中打开时包含路径onecore\base\cmd\maxpathawarestring.cpp
,这表明至少有一个源文件是用 C++ 编写的。
Hans Passant的附录:
它所依赖的导入使其很可能是 C 和 C++ 的混合体。CRT 函数,如
longjmp
,calloc
,free
表示 C 代码,很可能是古老的,可以追溯到 command.com 时代。它显然也使用了 C++ 异常处理,C++ 是他们最近所有代码开发的首选武器。混合并不少见。
和eryksun:
在调试器下,很明显最近对 CMD 的添加是用 C++ 编写的。
x cmd!*::*
展示了 C++std
命名空间的大量使用[...]
但是 CMD 仍然主要是 C,而不是 C++。它的命令和支持函数被实现为 C 函数,例如
eExit
、eChdir
、ParseStatement
、SearchForExecutable
和ExecPgm
。他们还没有将所有这些旧的 C 代码移植到 OOP 设计中。
所以我会混合使用 C 和 C++。
推荐阅读
- python - 如何将 max 函数从 CPLEX OPL 切换到 Docplex?
- docker - 新节点不与 Docker Swarm 通信
- javascript - 如何在 contenteditable 元素中粘贴多行文本,以便每行始终位于自己的 div 中?
- java - 从 SpringBootApplication 中的 ClientResponse 获取正文
- c# - 通过 GitHub Actions 在 Windows Runner 上安装 SQL Server
- reactjs - 将 React 、 Electron 和 RestApi 转换为 exe
- unity3d - 当我统一重新加载场景时,游戏卡住了
- python - UDP客户端到客户端通信(python)?
- python - 如何将pygame中的图像转换为numpy数组或数字?
- selenium-chromedriver - 如何使用 Playwright 更改默认语言 Chromium/Firefox?