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 はモジュラー プログラミング言語であり、importD プログラミングを行うときはステートメントが味方になります。

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' または他のインクルージョン ガードが必要になります。行を含めます。

D はわざわざソースをコピーする必要はなく、各ソース ファイルを独自のオブジェクト ファイルにコンパイルします。D の 'import' コマンドは、要求されたモジュールで見つかったシンボル (または各関数、クラス、構造体、列挙型、および変数の名前) を要求します。コンパイラは、これらのオブジェクト ファイルを実行可能ファイルに結合するだけです。まあ、それにはもう少し多くのことがありますが、これで十分正確なはずです。

また、Ruppe 氏が述べたように、ソース ファイルの名前を引用符で囲む必要も、名前にファイル拡張子を追加する必要もありません。

たとえば、main.d に main() 関数があり、main.d と同じフォルダーにある foo.d というソース ファイルを含めたい場合、main.d に次のように入力します。 ;

import foo;

foo では、次のようになります。

module foo;
<other code here>

お役に立てれば。これのほとんどは、http ://dlang.orgの言語定義の下の「モジュール」ページにもあります。

于 2013-02-05T03:01:26.037 に答える