如果我导入std.c库而不是在C中包含库,C代码是否可以使用D编译器编译,或者是否存在其他向后兼容性问题?
std.c
已被弃用,请改用core.stdc
。您在正文中提出的问题与问题不同。
问题1: 如果使用C库,D是否向后兼容C?
答案:是的。您可以使用C库。更多信息请参见此处。
问题2: C代码能否使用D编译器编译?
答案:D编译器的实现从未旨在能够编译C代码。然而,许多C代码可以编译,因为D 匹配C编译器的数据类型、布局和函数调用/返回序列。就像Zor指出的那样,C风格的函数指针语法和C风格的数组指针语法已被弃用。
#include
C头文件在D中。D与C或C ++均不向后兼容。相反,您可以在D代码中声明extern(C)
函数,并像调用D函数一样调用这些C函数(自然地,您必须链接它们所定义的C库)。有关从D调用C代码的详细信息,请参见以下链接:
druntime(其中包含core.*模块)具有许多标准C和OS函数的声明(在core.stdc.*和core.sys.*模块中),但是您必须自己查看druntime文件以查看它们是什么,因为它们目前没有适当的文档说明。对于要调用的任何其他C函数,您可以轻松创建它们的声明,如上面的链接所述。