我必须开发一个测试应用程序来测试图形驱动程序的一些功能。通过利用微软公开的标准,如 DXVAHD.h、DXVA2Api.h (Directshow) 和其他微软 API。由于与 C++ 相比,C# 中的编码非常容易,为什么我们不能使用 C# 来代替。是不是因为我们不能在 C# 中使用头文件(因为有包的概念)?
任何人都可以告诉我为什么在系统级编程方面更喜欢 C、C++ 而不是 C#。? 任何链接或学习材料 WRT 这些将不胜感激。
提前致谢。
我必须开发一个测试应用程序来测试图形驱动程序的一些功能。通过利用微软公开的标准,如 DXVAHD.h、DXVA2Api.h (Directshow) 和其他微软 API。由于与 C++ 相比,C# 中的编码非常容易,为什么我们不能使用 C# 来代替。是不是因为我们不能在 C# 中使用头文件(因为有包的概念)?
任何人都可以告诉我为什么在系统级编程方面更喜欢 C、C++ 而不是 C#。? 任何链接或学习材料 WRT 这些将不胜感激。
提前致谢。
当您编写系统软件或驱动程序时,您希望严格控制您的环境:内存使用、时间限制等。
使用 C# 是不可能的。即使您忽略了在虚拟机上运行会带来大量开销的事实,您仍然无法控制内存分配/释放策略,您永远无法确定 GC 线程何时会启动并阻塞您的工作线程等。
除此之外,还有许多您无法在 C# 中执行的低级操作:从读取/写入设备寄存器的值或直接访问内存开始,然后转到更具体的任务。
除了某些 API 是 C++ API 之外,没有任何理由不能在 C# 中执行此操作。与某些人在评论中所说的不同,您不是在创建驱动程序,而是在创建(引用)“用于测试图形驱动程序某些功能的测试应用程序”。(除非他们是硬件制造商,否则为什么会有人创建驱动程序?)
DirectShow 等流行的 API 具有 C# 绑定。对于那些不这样做的人,您可以通过将 API 包装在 C# 代码引用的 C++/CLI 程序集中轻松创建自己的 API。
C 被称为中级语言,因为它实际上是绑定了机器级语言和更传统的高级语言之间的差距。用户可以使用c语言进行系统编程(用于编写操作系统)以及应用程序编程(用于生成菜单驱动的客户计费系统)。因此它被称为中级语言。
高级 - Java - Ada、Modula-2、Pascal、COBOL、FORTRAN、BASIC
中级 - Java(通过 C 接口)、C++、C、FORTH、Macro-assemble
低级 - 汇编程序