D言語 Part22
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2009/06/22(月) 01:38:41過去スレ、関連スレは >>2
■前スレ
http://pc12.2ch.net/test/read.cgi/tech/1234363551/
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
http://www.dsource.org/projects/ldc (LDC, バックエンドにLLVM)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/candcpp2d (C/C++に疲れた人のD言語)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
■ IDE
ttp://dronten.googlepages.com/dscite (DSciTE)
ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks)
ttp://www.dprogramming.com/entice.php (Entice Designer)
ttp://www.dsource.org/projects/descent (Descent)
ttp://www.dsource.org/projects/poseidon (Poseidon)
0802デフォルトの名無しさん
2009/08/28(金) 16:57:46ttp://shinh.skr.jp/d/
bit→boolで一応通ったけど。
0803デフォルトの名無しさん
2009/08/28(金) 18:07:05おお、通った。ありがとう!
0804デフォルトの名無しさん
2009/08/28(金) 20:23:14SDLにIMサポートさえ入ればGUIライブラリを捨てられる
0805796
2009/08/28(金) 23:27:39やっぱバグですよね。すっきりした。
>> 801
そうです。
1947: Tag startTag = new Tag(tag_.name);
1948: startTag.attr = tag_.attr; // <- 追加
とりあえずこれで回避しました。ありがとう!
0806デフォルトの名無しさん
2009/08/29(土) 10:11:320807デフォルトの名無しさん
2009/08/29(土) 19:38:40こんな感じで問題ないんだろうか
DWORD[] buffer = new DWORD[size*3];
LibFunc(buffer.ptr);
0808デフォルトの名無しさん
2009/08/29(土) 19:42:27そこ気をつけたら大丈夫じゃね?
0809デフォルトの名無しさん
2009/08/29(土) 20:25:28AndreiかわいいよAndrei
0810デフォルトの名無しさん
2009/08/29(土) 22:13:050811デフォルトの名無しさん
2009/08/29(土) 22:18:57-ofXXXX.dll
だけでいいんじゃなかったっけ。
0812デフォルトの名無しさん
2009/08/29(土) 22:27:39thx
0813デフォルトの名無しさん
2009/09/02(水) 02:56:400814デフォルトの名無しさん
2009/09/02(水) 03:45:59特に文字列mixinしたら実行時には使われるはずの無い文字列が大量にEXE(-release)の中にあるけど、
不要な関数/文字列まで非デバッグのEXEに入れる必要ってあるの?
教えてエロイ人。
0815デフォルトの名無しさん
2009/09/02(水) 04:14:47確かにtemplate/mixinを多用するとその辺の肥大化が著しい
0816デフォルトの名無しさん
2009/09/02(水) 04:18:04最適化オプションじゃ消えないの?
0817デフォルトの名無しさん
2009/09/02(水) 07:39:540818デフォルトの名無しさん
2009/09/02(水) 12:57:35budで-Xにdfl.libとかphobos.libとかを付けたり消したりすることによってもサイズが違うし
dmdを使ってもまたサイズが違う
なんででしょう
0819デフォルトの名無しさん
2009/09/02(水) 13:02:37pure a = 1;
nothrow b = 1;
について何かご存じの方はいませんか?
0820デフォルトの名無しさん
2009/09/02(水) 18:21:41……ところで、記憶域クラスって何なの?
autoとかimmutableとかstaticとかならまだ理解できるけど、
pureとかnothrowとかになるとよくわからなくなってくる…
0821788
2009/09/02(水) 19:41:28とりあえずそうなってるだけじゃない?
仕様では詳しく言及してないみたいだし
0822デフォルトの名無しさん
2009/09/02(水) 19:42:390823デフォルトの名無しさん
2009/09/03(木) 07:09:50てっきりこれを使って「現在時刻から1秒後を取る」みたいなことが
できるもんだと思ってたから10分くらい悩んだ
0824デフォルトの名無しさん
2009/09/03(木) 12:37:020825デフォルトの名無しさん
2009/09/03(木) 16:56:38Dな人のTwitterアカウント
http://lists.puremagic.com/pipermail/digitalmars-d/2009-July/060482.html
ちなみにハッシュタグは、うぉるたんが #d_lang を使ってるけど、
いま検索すると出てくるのは日本人ばっかりw
0826デフォルトの名無しさん
2009/09/03(木) 17:54:270827デフォルトの名無しさん
2009/09/03(木) 18:02:41キタ━━━━━━━━(゚∀゚)━━━━━━━━━!!!
0828デフォルトの名無しさん
2009/09/03(木) 18:05:01これはどういうこっちゃ?
0829デフォルトの名無しさん
2009/09/03(木) 18:22:350830デフォルトの名無しさん
2009/09/03(木) 18:43:57これは動くね
0831デフォルトの名無しさん
2009/09/03(木) 22:17:32class A{
synchronized void f(){}
}
A x = new A;
x.f(); // error
auto y = new shared(A);
y.f(); // ok
0832796
2009/09/03(木) 22:42:38なおったー!
0833デフォルトの名無しさん
2009/09/04(金) 11:26:540834デフォルトの名無しさん
2009/09/04(金) 11:50:060835デフォルトの名無しさん
2009/09/04(金) 12:28:18次の更新か最新のtrunkで
0836デフォルトの名無しさん
2009/09/04(金) 12:49:30特にphobos
なんかあったらissue numberください
0837デフォルトの名無しさん
2009/09/04(金) 15:18:270838デフォルトの名無しさん
2009/09/04(金) 15:21:520839デフォルトの名無しさん
2009/09/04(金) 15:55:13void main() {
int number_normal = 10;
auto a = to!(string)(number_normal);
const number_const = 10;
auto b = to!(string)(number_const); // だめ
immutable number_immutable = 10;
auto c = to!(string)(number_immutable); // だめ
}
----------------------------------------
C:\dmd\dmd\src\phobos\std\conv.d(2580): Error: variable std.conv.to!(immutable(char)[],const(int)).to.u cannot modify const
C:\dmd\dmd\src\phobos\std\conv.d(8): Error: template instance std.conv.to!(immutable(char)[],const(int)) error instantiating
使い方が悪いんだろうか?
0840デフォルトの名無しさん
2009/09/04(金) 17:28:542.031ではいけているからtoに変更があったのかな
ところでconst/immutable storage classって使い分け難しいよね
0841デフォルトの名無しさん
2009/09/04(金) 22:22:240842デフォルトの名無しさん
2009/09/04(金) 22:47:32「ソースコードのどこそこが悪い」と書くとすぐに直してもらえるな。
phobosなら自分でデバッグできるし。
>>840
toというよりコンパイル時の評価順にに変更があるみたい
循環参照があるソースコード全滅 orz
0843デフォルトの名無しさん
2009/09/04(金) 23:11:39評価順に依存してるコードに問題があるのか?
0844デフォルトの名無しさん
2009/09/05(土) 00:11:160845デフォルトの名無しさん
2009/09/05(土) 00:22:33ごめん。std.conv.toは中身が書き換わってた
以前2.031の段階でroundToにimmutable/constなものが通らないのでstd.traits使って書き直しとけとITSにレポートしておいたのだが、
Andreiがついでにいろいろ書き直した結果こうなったっぽい
0846デフォルトの名無しさん
2009/09/05(土) 00:32:14自分でデバッグしてITSにレポートするといいかと
0847デフォルトの名無しさん
2009/09/05(土) 01:42:300848デフォルトの名無しさん
2009/09/05(土) 13:45:030849デフォルトの名無しさん
2009/09/05(土) 14:11:06Dは相変わらず仕様コロコロリンっぽいな
0850デフォルトの名無しさん
2009/09/05(土) 14:27:290851デフォルトの名無しさん
2009/09/05(土) 14:53:19ついこの前の更新でも余裕で言語仕様に追加があった。
D1系が安定というのは迷信。バージョンごと固定しなきゃダメだ。
0852デフォルトの名無しさん
2009/09/05(土) 15:00:350853デフォルトの名無しさん
2009/09/05(土) 16:39:27> 循環参照があるソースコード全滅
これは致命的だなぁ…D1系ですらDFL死んでるし。
0854デフォルトの名無しさん
2009/09/05(土) 17:16:52importしてるはずのシンボルが未定義になってる
0855デフォルトの名無しさん
2009/09/05(土) 17:49:11循環参照するクラスたちをファイルを分けずにひとつにしてしまうと動くことがある。
これ自体はもっと以前からあるバグのようなのだが、評価順が変わって顕在化するようになった模様
http://d.puremagic.com/issues/show_bug.cgi?id=3286
0856デフォルトの名無しさん
2009/09/05(土) 20:06:23Error 42: Symbol Undefined __d_array_bounds
リンクエラーの原因がわかりません。
どうすればいいのでしょうか?
Error 42: Symbol Undefined __d_assert_msg
Error 42: Symbol Undefined __tls_array
Error 42: Symbol Undefined _D11TypeInfo_Aa6__initZ
Error 42: Symbol Undefined __d_arrayappendT
Error 42: Symbol Undefined __adEq2
Error 42: Symbol Undefined _D3std9algorithm12__ModuleInfoZ
Error 42: Symbol Undefined _D10ModuleInfo6__vtblZ
0857856
2009/09/05(土) 20:07:340858デフォルトの名無しさん
2009/09/05(土) 20:15:59今のコンパイラのバージョンのランタイムライブラリで一般のライブラリをコンパイルしてないかじゃないかな
とりあえず環境を一から構築してみるといいかも。
0859デフォルトの名無しさん
2009/09/05(土) 23:52:21あー情報後だしになって申し訳ないですが、DLLを作ろうとしていて、そこで問題があったっぽいです。
試しにDllMainを普通のmainにしたら、意味のわからないリンクエラーはなくなりました。
ありがとうございました。
0860デフォルトの名無しさん
2009/09/06(日) 00:44:54まあ多分この問題はすぐに解消されるだろ
と信じていよう
0861デフォルトの名無しさん
2009/09/06(日) 00:55:090862デフォルトの名無しさん
2009/09/06(日) 08:56:490863デフォルトの名無しさん
2009/09/07(月) 04:58:11ありそうでなかったような気がしてきたんだが…
0864デフォルトの名無しさん
2009/09/07(月) 05:32:12version (HOGE) {}
else { ... }
/(^o^)\
0865デフォルトの名無しさん
2009/09/07(月) 08:48:11ifにifnとかないし
ってことで納得しといて
0866デフォルトの名無しさん
2009/09/07(月) 09:59:350867デフォルトの名無しさん
2009/09/07(月) 16:09:490868デフォルトの名無しさん
2009/09/07(月) 16:34:13あれは static unless が欲しいという話だ
0869デフォルトの名無しさん
2009/09/07(月) 16:43:51でも、 version(!HOGE) みたいなことができたら嬉しいのは、確かに思うこともある。
0870デフォルトの名無しさん
2009/09/07(月) 16:59:49version(Hoge){}else{
...
}
でも別に困りはしないが不格好ではある
構文もversion(!HOGE)しか思いつかないが ! の意味としっくりこないのが悔やまれる
0871デフォルトの名無しさん
2009/09/07(月) 20:02:52template FC() {
void fieldCount() {writeln(this.tupleof.length);}
}
void main() {
class Test1 { mixin FC; int a, b, c; }
class Test2 { int a, b, c; mixin FC; }
class Test3 { int a; mixin FC; int b, c; }
(new Test1).fieldCount;
(new Test2).fieldCount;
(new Test3).fieldCount;
}
出力結果
0
3
1
なん…だと…?
0872デフォルトの名無しさん
2009/09/07(月) 20:58:20その場所までに定義された分だけ見た値が返ってくるのか。
関数名をthis.tupleof.lengthに依存するようにしたら、同じクラス中で何度もmixinできるな。
コンパイル時のクラス定義時にはそのへんのプロパティは参照できず、
このfieldCountのような場合はちゃんとまともな値を返す、ってのが正しい動作かな?
0873デフォルトの名無しさん
2009/09/08(火) 01:11:39ってsの型どうなんの?
0874デフォルトの名無しさん
2009/09/08(火) 01:30:38const(string) == const(immutable(char)[])
0875デフォルトの名無しさん
2009/09/08(火) 20:03:58template W(T, T U) { string W = U.stringof; }
enum En { A }
void main() {
writeln(W!(int, 123)); // "U"と出力
writeln(W!(string, "str")); // "U"と出力
writeln(W!(En, En.A)); // "En"と出力
}
この3番目が"En"になるのは何でなんだぜ?
0876デフォルトの名無しさん
2009/09/08(火) 21:07:400877デフォルトの名無しさん
2009/09/09(水) 00:48:39テンプレイト以前にそもそも、En.A.stringof が En.A になるはずなのに
En になっちゃってるね。バグだと思う。報告よろ。
0878デフォルトの名無しさん
2009/09/09(水) 07:30:100879デフォルトの名無しさん
2009/09/09(水) 13:06:32class C { double d; }
void main() {
while (1) {
scope t = new C; // クラスインスタンスならスタックに割り当てられて
//scope t = new double; // プリミティブ型がスタックに割り当てられないのは納得が行かん
Thread.sleep(10000);
}
}
0880デフォルトの名無しさん
2009/09/09(水) 14:18:320881デフォルトの名無しさん
2009/09/09(水) 15:10:04仕様によれば、scope変数の初期化にnew式を使う場合は、
クラスに限らずスタックに割り当てることになってるからバグだな。
報告しといてちょ
0882デフォルトの名無しさん
2009/09/09(水) 15:30:19ほう
そんなのあったのか
0883デフォルトの名無しさん
2009/09/09(水) 16:44:53よくしらべたなぁ・・・
0884デフォルトの名無しさん
2009/09/09(水) 20:21:510885デフォルトの名無しさん
2009/09/09(水) 21:29:550886デフォルトの名無しさん
2009/09/09(水) 21:51:36ライブラリ用のプロジェクトを作ってそこにソースを置いて、sc.iniのDFLAGSにパスを通したのですが、コンパイルはできてもリンクエラーが出てしまいます。
どうやればいいのでしょうか?
0887デフォルトの名無しさん
2009/09/09(水) 21:57:45なぜかないと思う
0888デフォルトの名無しさん
2009/09/09(水) 22:00:37そんなもんparse!int("0xffff")とかで…
できないね。変態度が足りん
>>886
importはincludeと違ってそのまんまコピーしてくるわけじゃないからなあ
dmd a.d library.d
みたいにいちいち一緒にコンパイルするか、自動的に依存するファイルを探してくれるbudみたいなツールを使うか、
ライブラリを作ってDFLAGSでリンクするように設定するか
となるとimportするだけで使えるライブラリって無理か
0889デフォルトの名無しさん
2009/09/09(水) 22:02:03ttp://d.hatena.ne.jp/haru-s/20060921/1158843229
をさらにいじってこうしてる
long hexToDecimal(char c) pure
{
return hexToDecimal([c]);
}
long hexToDecimal(in char[] str) pure
{
long sum;
foreach(char c; str)
sum = sum*16 + ((c|0x20)-'0')%('W'-'0');
return sum;
}
0890デフォルトの名無しさん
2009/09/09(水) 22:06:23#includeするだけで使えるライブラリ?
これの出番かw
mixin(import(filename.d"));
0891デフォルトの名無しさん
2009/09/09(水) 22:14:27見るからに邪悪すぎるwww
0892デフォルトの名無しさん
2009/09/09(水) 22:23:33ありとあらゆる関数をテンプレートにすればいいよ.
0893デフォルトの名無しさん
2009/09/09(水) 22:27:04なんかリンクする必要があるなら、ちゃっかりライブラリ側でpragma(lib,"foo.lib");とかやっちゃえばいい気がする。
0894デフォルトの名無しさん
2009/09/09(水) 22:47:02{
return "Hello,world!";
}
T func(T : int)()
{
return -1;
}
void main()
{
string str = func();
writeln(str);//Hello,world!
}
これが動いたらやりたいことが色々できるんだけど無理かなぁ
0895デフォルトの名無しさん
2009/09/09(水) 22:57:02とかの時だけ特別にエラーでいいからやってほしいよな
0896デフォルトの名無しさん
2009/09/09(水) 23:03:40autoを例外にすればやってやれないことはないと思うんだけどな
0897デフォルトの名無しさん
2009/09/09(水) 23:17:22>>888
C++のようにはいかないんですね。
>>890
それはちょっとw
>>892-893
なるほど。テンプレートだけならいけるんですね。
0898デフォルトの名無しさん
2009/09/09(水) 23:53:57Error: no object files to link
というエラーが出たんですが、これはどういう意味なのでしょうか?
0899デフォルトの名無しさん
2009/09/10(木) 00:15:45例外指向プログラミングときいて!
0900デフォルトの名無しさん
2009/09/10(木) 00:30:180901デフォルトの名無しさん
2009/09/10(木) 02:07:19左辺値から右辺値を推論って最近話題だよね
レス数が900を超えています。1000を超えると表示できなくなるよ。