在C中你可以做空的定义,但你如何在D?
中做到这一点#define MYAPI
MYAPI int printThis(const char *str);
我怎样才能在D?
中这样做答案 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,并且只包含编译器认为需要根据该代码编译内容的内容。