如何在 D 中定义空?

How to define empty in D?

在 C 中你可以做空定义,但你如何在 D 中做到这一点?

#define MYAPI
MYAPI int printThis(const char *str);

我如何在 D 中执行此操作?

你不知道。

真正要问的问题是,该宏首先要完成什么?通常 C 中的模式在 D 中用 extern(System) 更好地表示 - 表明它是根据当前操作系统的约定链接的。在 C 和 C++ 中,您使用可以定义为 extern "C" 或某些 __declspec 的宏来说明不同的 OS、编译器和语言(请记住,C 和 C++ 不是同样的事情,尽管他们可以共享代码)组合。但是在D中,它被标准化为extern(System).

同样,答案是您不会完全那样做,但是您要实现的更高层次的目标可能会以不同的方式实现,所以这取决于。

extern (D) int printThis(string str);

这保证函数在别处定义并将链接进来。这与 C 中的前向声明不同;例如,您不需要它来调用文件中比其主体更早的函数。

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

您还可以查看 D interface files,它是编译器从您的源代码生成的,并且只包含编译器认为需要针对该代码编译某些内容的内容。