問題タブ [dmd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - クラッシュ情報から関数名を表示
私のプログラム (Linux 上の D コンパイラである DMD でコンパイルされたもの) がクラッシュし、次のような情報が出力されます。
関数のアドレスをその名前に変換するにはどうすればよいですか? でプログラムをコンパイルした-debug
ので-g
、必要なデバッグ情報が含まれているはずですが、使い方がわかりません。
(PS: これは単純なことですが、どうすればよいかわかりません。おそらく正しい検索用語を使用していないでしょう)。
templates - Dで「テンプレートコンストラクター」を使用するには?
Dのテンプレート ドキュメントには、「テンプレート コンストラクター」と呼ばれる小さなセクションが含まれています。そのセクションには、例や詳細なドキュメントはありません。
私はその機能を使用しようとしています (「静的コンストラクター」を使用できることはわかっていますが、テンプレート コンストラクターを好む理由があります)。
特に、コンパイル時にいくつかのハッシュを生成しようとしています。これが私の試みです:
これは DMD 2.053 ではコンパイルできません:
最初のコンストラクターについて文句を言います。それを削除した後:
私が使用する構文が MyHash がテンプレート構造である場合と同じであることを考えると、これはかなり論理的です。
それで、「テンプレートコンストラクター」を宣言して呼び出す方法を知っている人はいますか?
operator-overloading - opIndexAssignのオーバーロード
クラスの1つでopIndexAssignをオーバーロードするのに問題があるようです。
私にはクラスがあります。このように定義されたJSObject:
..。
Dobjectスーパークラスはput()メソッドとget()メソッドをオーバーロードしており、連想配列としてアクセスできるようにそれらをラップしようとしています。
String、Stringメソッドでは機能しますが、JSObjectを値として使用しようとすると、失敗します。
私は自分が間違っていることに少し戸惑っています。これは、コンパイラがopIndexAssign(String、JSObject)メソッドではなくopIndexAssign(String、String)に適合するようにキャストしようとするようなものです。
opIndexAssign関数を間違って定義しましたか?
前もって感謝します、
garbage-collection - D のガベージ コレクション、ポインター、およびスコープ
長い投稿についてお詫び申し上げます - ガベージ コレクションに関連していると思われる問題が発生しています。
次のように DMDScript をラップするクラスがあります。
これまでのところ、すべて問題なく、エラーなしでコードを実行できます。出力:
また、cc.global オブジェクトをトレースするメソッドを ScriptingHost に追加しました。
...これも正常に動作します-クラスalaの外部からアクセスしようとすると問題が発生します:
次に、次のエラーが表示されます。
ここで問題に光を当てることができる人はいますか?おそらくそれを回避する方法を教えてください。:)
編集: Windows D1-Tango セットアップを使用しています。私が使用しているバージョンは 0.99.9 Tango/DMD 1.056 Kai bundle です。
ありがとう、
compiler-construction - DMD 対 GDC 対 LDC
さまざまな D コンパイラの長所と短所は何ですか? 性能や規格適合・D2対応はどうですか?デバッガーはどの程度サポートされていますか? エラー メッセージと IDE の統合は適切ですか? 64 ビットのサポートはどの程度優れていますか? これまでの私の考え:
DMD
- 成熟し、手入れが行き届いている
- 1 つのプラットフォームのみ、64 ビットのサポートは良くない
- FOSSではない
GDC
- さまざまなプラットフォームをサポート
- 非常に成熟した最適化があるため、高速ですか?
- ランタイムが古くなっていますか?
- GCC は良いデバッガーをサポートしていますか?
LDC
- さまざまなプラットフォームをサポート
- LLVMなので、JITingをサポートしていますか?
- 非常に成熟した最適化があるため、高速ですか?
- あまりよく維持されていませんか?
- ランタイムが古くなっていますか?
死んでいる/機能していない
- ダン
- sdc
- MiniD - 非常に素晴らしいですが、D ではありません (ただし、D であると主張したことはありません)。
ARM をターゲットにすることを考えていて、GDC が最適なツールだと思いますが、よくわかりません。
windows - DMDのkernel32.libを置き換えて、不足している関数を含める
私はWindows7でdmd2.054とoptlink8.00.12を使用しています。
次のプログラム:
コンパイル時にエラーが発生します:
しかし、kernel32.libを置き換えようとすると、多くのエラーが発生します。
元のlibとのために作成されたimplibを見るとLocalFree
違いがありますが、それが何を意味するのかわかりません(この出力からいくつかの特殊文字が欠落しています)
プログラムで新しいkernel32.libを使用して、シンボルの欠落を回避する方法はありますか?
d - readf が期待どおりに動作しないのはなぜですか?
最初の反復は機能し、出力されますn
が、その後readf()
は戻りません。
ドキュメントには、readf()
次の説明が 1 行しかありません。
uint readf(A...)(char[] 形式、A args);
私は何か間違ったことをしていますか?または何か問題がありreadf()
ますか?標準入力から数字を読み取るだけです。
使用: DMD 2.054 64 ビット
command-line - 他のモジュールがコンパイルされないのはなぜですか?
と の 2 つのファイルがMain.d
ありImportMe.d
ます。それらの目的は自明であるべきです。それらは同じディレクトリにあり、明示的なモジュール宣言はありません。ただし、コンパイルしようとするとMain.d
、「シンボルが見つかりません」というエラーが発生します。
両方のファイルを同時にコンパイルしても問題ありません。
ただし、標準ライブラリでこれを行う必要はありません。何が違うのですか?インクルード パスを変更し-I
ても目に見える効果はありません。
d - Fedora 16 での D プログラミング
最近、Fedora 16 をインストールしました (これは素晴らしいです)。主な理由は、LDC2 を試してみたかったからですが、Gnome Shell が Ubuntu 11.10 よりも Fedora でよりスムーズに動作するためです (少なくとも私のハードウェアでは)。
LDC2 はうまく機能しますが、LLVM .ll/.bc コードを出力することで、Windows/Mac/Android でアプリケーションをコンパイルして実行できるかどうか疑問に思っています。LLVM を使用している Windows マシンで、.ll/.bc ファイルを ASM .s にコンパイルできます。しかし、最初に ASM をコンパイルしようとすると、「'main' functions not found.」というエラーが表示されます。ASM を調べると、_Dmain 関数が表示されます。私は ASM をコンパイルした経験がないので、少し迷っています。
ここで DRuntime が機能することは理解していますが、LDC2 の DRuntime プラットフォーム サポートの状態に関する最新情報はほとんどありません。だから私は私のオプションがここにあるのだろうかと思っています。この時点で、LDC2 は Windows 用のコードをコンパイルできますか? 現時点でサポートされている他のプラットフォーム/アーキテクチャのクロスコンパイルはありますか?
GDCはどうですか?GDC を試してみたいのですが、Fedora Software Center で見つけることができません。また、Linux に少し慣れていないため、ソースからビルドするのに苦労しています。
D (バージョン 2) は私のお気に入りの言語 (2 番目に C#) であり、ハードウェアやプラットフォームのサポートを気にせずに D でゲーム/アプリを作成できる日を楽しみにしています。私はこの言語を応援しています。将来、オープン ソース コミュニティが D を強く受け入れることを願っています。これは、私が今まで見た中で、パワー、パフォーマンス、生産性の最高のバランスです。
d - D の拡張関数
少し前に「The D Programming Language」を購入しました。素晴らしい本、非常に教育的です。ただし、本にリストされている言語機能をコンパイルしようとすると問題が発生します:拡張機能。
この本の中で、Andrei は次のように任意の function(a, b) を呼び出すことができると書いています。だから私はこれを行うことができるはずです:
正しい?この機能はまだ実装されていませんか、それとも何か不足していますか? std.range をインポートすると配列にメソッドが追加されるため、あるレベルで実装されているように見えます。