我只是好奇为什么为什么驱动程序和固件几乎总是用C或汇编编写,而不是C++?

我听说这是有技术原因的.

有人知道吗?

很多爱,

推荐答案

因为在大多数情况下,操作系统(或"运行时库")提供C++所需的stdlib功能.

在C和ASM中,您可以创建不包含外部依赖项的裸可执行文件.

但是,由于Windows确实支持C++stdlib,所以大多数Windows驱动程序都是用C++(有限的子集)编写的.

另外,当固件被写成ASM时,通常是因为(A)它在其上执行的平台没有C++编译器,或者(B)有神速或大小的限制.

请注意,自2000年初以来,(B)通常不是一个问题.

C++相关问答推荐

有效地计算由一组点构成的等边三角形和等腰三角形的数量

C:二进制搜索和二进制插入

ESP32在vTaskDelay上崩溃

Kdb:仅升级指定的列

如何在C中只对字符串(包含数字、单词等)中的数字进行重复操作?

将字符串数组传递给C中的函数:`str[dim1][str_size]`vs`*str[dim1]`

使用%f格式说明符打印整数值

我在C程序的Flex/Bison中遇到语法错误

CS50判断灯泡运动的问题,判断时多出一个灯泡,但不在终端上

如何在c中使用具有不同变量类型的内存分配?

递归打印二维数组(C编程)

如何在不使用字符串的情况下在c中编写函数atof().h>;

宏观;S C调深度

从整型转换为浮点型可能会改变其值.

程序如何解释变量中的值

为什么GCC 13没有显示正确的二进制表示法?

在Ubuntu上使用库部署C程序的最佳实践

如果类型是新的,offsetof是否与typeof一起工作?

C语言中的指针和多维数组

如何找出C中分配在堆上的数组的大小?