-1

我必须开发一个测试应用程序来测试图形驱动程序的一些功能。通过利用微软公开的标准,如 DXVAHD.h、DXVA2Api.h (Directshow) 和其他微软 API。由于与 C++ 相比,C# 中的编码非常容易,为什么我们不能使用 C# 来代替。是不是因为我们不能在 C# 中使用头文件(因为有包的概念)?

任何人都可以告诉我为什么在系统级编程方面更喜欢 C、C++ 而不是 C#。? 任何链接或学习材料 WRT 这些将不胜感激。

提前致谢。

4

3 回答 3

4

当您编写系统软件或驱动程序时,您希望严格控制您的环境:内存使用、时间限制等。

使用 C# 是不可能的。即使您忽略了在虚拟机上运行会带来大量开销的事实,您仍然无法控制内存分配/释放策略,您永远无法确定 GC 线程何时会启动并阻塞您的工作线程等。

除此之外,还有许多您无法在 C# 中执行的低级操作:从读取/写入设备寄存器的值或直接访问内存开始,然后转到更具体的任务。

于 2013-03-12T10:11:34.747 回答
3

除了某些 API 是 C++ API 之外,没有任何理由不能在 C# 中执行此操作。与某些人在评论中所说的不同,您不是在创建驱动程序,而是在创建(引用)“用于测试图形驱动程序某些功能的测试应用程序”。(除非他们是硬件制造商,否则为什么会有人创建驱动程序?)

DirectShow 等流行的 API 具有 C# 绑定。对于那些不这样做的人,您可以通过将 API 包装在 C# 代码引用的 C++/CLI 程序集中轻松创建自己的 API。

于 2013-03-12T10:17:07.913 回答
0

C 被称为中级语言,因为它实际上是绑定了机器级语言和更传统的高级语言之间的差距。用户可以使用c语言进行系统编程(用于编写操作系统)以及应用程序编程(用于生成菜单驱动的客户计费系统)。因此它被称为中级语言。

高级 - Java - Ada、Modula-2、Pascal、COBOL、FORTRAN、BASIC

中级 - Java(通过 C 接口)、C++、C、FORTH、Macro-assemble

低级 - 汇编程序

于 2013-03-12T08:46:59.283 回答