1

那是:

#include "mySnippet.h"

D竟然有这种东西?

使用import "myInclude.d"过程:

test.d(5): Error: Identifier expected following import
test.d(5): Error: ';' expected
4

4 回答 4

8

与 C/C++ #include 语句远程相似的唯一事情是文件的就地导入,然后将其混合到源代码中:

mixin(import("mySnippet.d"));

D 是一种模块化编程语言import,当您进行 D 编程时,该语句是您的朋友。

在 D 中,你真的不需要像#pragma once. 这个扩展和包含守卫在那里是因为 C 和 C++ 不关心这些东西。D 可以。

但是,我假设您可能想知道如何为您的客户提供接口,以防您创建一个库并且您不想公开内部。为此,DPL 团队提出了D 接口文件来解决这个问题。因此,您只需将接口文件连同您的库一起提供给您的客户端,工作就完成了。

于 2013-01-30T17:31:53.957 回答
5

请参阅参考文件: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();
于 2013-01-26T23:24:03.253 回答
0

D风格是:

import myinclude;

D 没有像 C 那样的文本包含。

于 2013-01-26T23:20:46.967 回答
0

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的语言定义下的“模块”页面上

于 2013-02-05T03:01:26.037 回答