システムのCコンパイラと相性良く動作するように設計されています。独自のVMを持ったりはせず、既存のCのランタイムライブラリを使うのです。用のラッパを書いたり...という作業はばかげています。Cの関数を呼び出せるというのは、なんと楽なことでしょうか。Cとの互換性が実現されています。関数を呼び出すCの関数はDから直接呼び出せます。Cの関数を別のDLLに分けたりする必要は全くありません。Cの関数は呼び出し規約の指定付きで宣言します。呼び出し規約で問題ないでしょう。Cの関数の正しい呼び出し/復帰手続きについて、把握しています。C関数でオーバーロードすることはできません。して処理されています。Dにはvolatile修飾子もありません。volatileを使ったCの関数を宣言するには、単に宣言からこの予約語を取り除いてください。Dの文字列は0終端になっていません。文字列リテラルは0終端になっています。よって明示的にメモリを管理します。明示的にメモリ管理を行うこともできます。いった事故が起きないことを確かめなくてはなりません。そちらを代わりに渡す。その領域へのポインタをスタック上(引数か、自動変数)に残しておく。ガベージコレクタはスタック上のオブジェクトは生きていると判定します。その領域へのポインタを静的データ領域に残しておく。ガベージコレクタは静的データ領域のオブジェクトは生きていると判定します。よってガベージコレクタへ登録する。割り当てられたメモリ領域の内部へのポインタがあれば十分です。領域の先頭へのポインタを保持しておく必要はありません。ガベージコレクタによって探索されません。コンパイラで成り立ちます。Cの標準では型のサイズは一意に定められていないので、注意が必要です。配列はポインタとして渡されます。Dでは、静的配列は参照渡しではなく、値渡しされます。関数プロトタイプはCの期待するものになっているように調整する必要があります。Dでのcharの動的配列はそうなっていません。格納されるようになっているためです。構造体と共用体Dの構造体と共用体は、Cのそれとほぼ同じです。構造体の整列を制御します。明示的なアラインメント属性が用意されています。D側の構造体宣言に明示的にその値を設定して下さい。Dはビットフィールドをサポートしません。シフトとビットマスク演算によってエミュレートできます。いうライブラリ型もあります。ビットフィールドはシフトとマスクを使ったインライン関数に変換されます。とリンクすれば呼び出すことができます。ヘッダファイルから変換して作る必要があります。プロジェクトに貢献してください。直接アクセスできます。ブロックで宣言される必要があります。コードの側で割り当てられていることを処理系に伝えます。グローバル変数は、デフォルトではスレッドローカルではなく、グローバルな記憶域に配置されます。記憶域クラスを使います。