【发布时间】:2021-10-27 18:34:03
【问题描述】:
我有两个相关的问题,一个是出于好奇的理论问题,另一个是询问可能的用例。
(1) 是否可以编译 C++ 程序(使用例如 g++)但将程序与 C 标准库(例如 libc)而不是 C++ 标准库(例如 libstdc++)链接?我知道 C++ 标准库包含 C 标准库,但我要求一种方法来仅保留 C 库。我知道可以删除带有-nostdlib 标志的标准库,但我想只删除标准库的“C++ 部分”并保留“C 部分”。
(2) 据我所知,有些人仍然使用 C 而不是 C++ 的一个原因是当目标系统内存不足时(例如,嵌入式系统),而 C++ 标准库对于可用内存来说太大了.在这种情况下,用 C 标准库替换 C++ 标准库会解决问题并允许这些人免费使用 C++ 语言特性(命名空间、更多类型安全等)吗?如果可能,会有缺点吗?为什么今天的 C 程序员不这样做?
【问题讨论】:
-
您必须重写所有 .h 文件以将所有函数声明为
extern "C" -
第 2 点不相关。嵌入式系统程序员知道如何在资源匮乏的环境中使用 C++。还有更重要的问题 - 例如动态内存分配(应该避免,许多标准禁止它)在使用 C++ 进行 uC 编程时必须解决。这是可行的 - arguino 是最好的例子
-
我不明白。您不能以任何方式“用 C stdlib 替换 C++ stdlib”。这些是不同的东西。
-
在我的店里,人们不使用 C++ 的主要原因是他们不懂 C++(obj.method() 格式对他们来说是陌生的)。我很难让他们切换到 C++ 只是为了使用引用和
bool类型。 :-( -
有人真的了解 C++ 吗?