【发布时间】:2015-10-15 03:30:54
【问题描述】:
我正在开发内核。编写内核的任务之一是必须移植 C 库。 memcmp、strlen等一些函数需要重写。大多数时候我看到的代码是用 C 编写的,然后包装在 extern "C" 中。但是,这使我的构建过程变得复杂,因为有很多用 C 编写的文件,还有很多用 C++ 编写的文件,它们必须链接在一起,这只是一个令人头疼的问题。如果整个东西都可以用 C++ 编写,那就太好了。
这有意义吗?
【问题讨论】:
-
从 C++ 标准的角度来看,您可以在 COBOL 中实现标准库,只要它符合标准的要求。
-
混合
C++和C库应该不是问题。你能澄清你的问题吗? -
我不完全确定 stdlib/libc 与内核有什么关系,但如果你想 C(或汇编)代码与你的库链接,则需要编译函数
extern "C"所以你没有 C++ 名称修改问题。 -
“编写内核的任务之一是必须移植 C 库。” - 不,如果你愿意,你可以编写一个没有 C 库的内核,或者使用完全不同的东西。这取决于你。
-
您想在内核代码中使用它,还是将它提供给用户应用程序?无论哪种方式,只要最终你有一个包含所需符号、正确调用约定和每个符号背后的标准化行为的目标文件,你就可以用几乎任何你喜欢的语言编写 C 库。
extern "C"只需要阻止 C++ 编译器尝试搜索损坏的名称,因此它只需要在函数的声明周围。
标签: c++ c freestanding