如何在D中定义空?

时间:2018-04-21 20:17:46

标签: d

在C中你可以做空的定义,但你如何在D?

中做到这一点
#define MYAPI
MYAPI int printThis(const char *str);

我怎样才能在D?

中这样做

2 个答案:

答案 0 :(得分:5)

你没有。

要问的真正问题是,该宏试图首先实现的是什么?通常,C中的模式更好地由D中的extern(System)表示 - 表示它是根据当前操作系统的约定进行链接的。在C和C ++中,您使用可以定义为extern "C"或某些__declspec的宏来考虑不同的操作系统,编译器和语言(请记住,C和C ++不是同一个东西,尽管他们可以共享代码)组合。但在D中,它被标准化为extern(System)

所以,答案是你没有做到这一点,但是你要达到的更高层次的目标可能以不同的方式实现,所以它取决于。

答案 1 :(得分:1)

extern (D) int printThis(string str);

这承诺该功能在别处被定义并且将被链接。它与C中的前向声明不同;例如,你不需要它来调用文件中早于函数的函数。

您还可以使用extern (C)extern (C++)

您也可以查看编译器从源代码生成的D interface files,并且只包含编译器认为需要根据该代码编译内容的内容。