那是:
#include "mySnippet.h"
D竟然有这种东西?
使用import "myInclude.d"
过程:
test.d(5): Error: Identifier expected following import
test.d(5): Error: ';' expected
与 C/C++ #include 语句远程相似的唯一事情是文件的就地导入,然后将其混合到源代码中:
mixin(import("mySnippet.d"));
D 是一种模块化编程语言import
,当您进行 D 编程时,该语句是您的朋友。
在 D 中,你真的不需要像#pragma once
. 这个扩展和包含守卫在那里是因为 C 和 C++ 不关心这些东西。D 可以。
但是,我假设您可能想知道如何为您的客户提供接口,以防您创建一个库并且您不想公开内部。为此,DPL 团队提出了D 接口文件来解决这个问题。因此,您只需将接口文件连同您的库一起提供给您的客户端,工作就完成了。
请参阅参考文件:http ://dlang.org/module.html
导入是这样完成的(从那里提取):
import std.stdio; // import module stdio from package std
import foo, bar; // import modules foo and bar
void main() {
writefln("hello!\n"); // calls std.stdio.writefln
}
模块是这样创建的:
module A;
void foo();
void bar();
D风格是:
import myinclude;
D 没有像 C 那样的文本包含。
D 不像 C/C++ 那样包含文件。
C/C++ 实际上将包含文件的内容复制到#include 的位置,这就是为什么需要'#pragma once' 或其他包含保护的原因,因为代码每次在#include 中时都会被复制包括线。
D 不费心复制源代码,并将每个源文件编译成自己的目标文件。D 中的“import”命令要求在模块中找到的符号(或每个函数、类、结构、枚举和变量的名称)。然后编译器只需将这些目标文件连接到可执行文件中。好吧,还有比这更多的东西,但这应该足够准确。
此外,正如 Ruppe 先生所说,无需将源文件的名称括在引号中,也无需在名称中添加文件扩展名。
例如,如果你在 main.d 中有你的 main() 函数,并且你想包含一个名为 foo.d 的源文件,它与 main.d 位于同一文件夹中,那么你在 main.d 中键入以下内容;
import foo;
在 foo 中,你会有;
module foo;
<other code here>
希望这可以帮助。其中大部分也位于http://dlang.org的语言定义下的“模块”页面上。