D言語 Part26
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/12/28(火) 10:49:05■前スレ
http://hibari.2ch.net/test/read.cgi/tech/1281826764/
■本家
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/candcpp2d2 (C/C++に疲れた人のD言語2.0)
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)
ttp://dusers.dip.jp (D言語友の会)
ttp://www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
0655デフォルトの名無しさん
2011/03/25(金) 00:13:20.59読みました�d
ライブラリ使用者側としては「DWTを使ってるけど何かあってもDWT作成者には責任はないです」
っていうのをDWTのリンクに添えて書いておけばソース開示なしで商用利用も可能って感じかな
間違ってたら突っ込みお願いします
0656デフォルトの名無しさん
2011/03/25(金) 01:08:41.32exit(0)とかはとりあえずthrow new Exception("exit(0)")してるんですが、
もっとそれっぽいのありますか。
0657デフォルトの名無しさん
2011/03/25(金) 01:39:29.240658デフォルトの名無しさん
2011/03/25(金) 05:51:23.20struct S { private int n; }
// main.d
import s;
void main() { S s; s.tupleof[0] = 10; }
が通っちゃうらめえ。
0659デフォルトの名無しさん
2011/03/25(金) 07:03:40.65またバグなのか仕様なのかよくわからない動作なのか
0660デフォルトの名無しさん
2011/03/25(金) 09:35:56.30修正優先度も低そうだし
0661デフォルトの名無しさん
2011/03/25(金) 10:53:28.69リンカが通らないorz
0662デフォルトの名無しさん
2011/03/26(土) 05:03:56.50http://ideone.com/OHI9o
0663デフォルトの名無しさん
2011/03/26(土) 06:05:47.200664デフォルトの名無しさん
2011/03/26(土) 08:07:10.82privateメンバあるなら大抵コンストラクタもあるだろうから問題はないだろうけど、なんか微妙に気持ち悪い感じ。
0665デフォルトの名無しさん
2011/03/26(土) 12:17:31.60>>658の場合は
auto s = S(42);
ができるんだよなぁ
privateは見えない建前だから、その42はどこ行くの?っていう
0666デフォルトの名無しさん
2011/03/26(土) 13:51:32.38リテラルだと思うときもいけど
0667デフォルトの名無しさん
2011/03/26(土) 15:54:24.700668デフォルトの名無しさん
2011/03/26(土) 16:10:55.890669デフォルトの名無しさん
2011/03/26(土) 19:50:41.910670デフォルトの名無しさん
2011/03/26(土) 21:22:10.38と
a =+ b;
を間違えて30分くらいハマった
こういう文法を持つC言語は邪悪すぎる
みんなでDに移行しようぜ
0671デフォルトの名無しさん
2011/03/26(土) 22:53:51.65privateと指定することができないじゃん
0672デフォルトの名無しさん
2011/03/26(土) 22:58:34.30なんの為?
0673デフォルトの名無しさん
2011/03/27(日) 00:02:46.84イヒヒイイヒヒ
0674デフォルトの名無しさん
2011/03/27(日) 00:19:54.400675デフォルトの名無しさん
2011/03/27(日) 00:45:38.950676デフォルトの名無しさん
2011/03/27(日) 09:59:11.22Bindingsにあるのかと思ったら古かったんで自分で書こうかと思ってるんだが
0677デフォルトの名無しさん
2011/03/27(日) 11:47:13.400678デフォルトの名無しさん
2011/03/27(日) 12:49:10.03というかhtodってメンテされてんの?
0679デフォルトの名無しさん
2011/03/27(日) 12:51:29.440680デフォルトの名無しさん
2011/03/27(日) 14:49:57.93「エラー出るとこだけ修正」だと↑とかマクロがっつりコメントアウトしちゃうとことか修正できないし
ぶっちゃけ手書きとあんま変わらん
0681デフォルトの名無しさん
2011/03/28(月) 19:46:38.75期待sage
0682デフォルトの名無しさん
2011/03/29(火) 06:43:10.90なんだか無くても動いてるような気がするんですが。
0683デフォルトの名無しさん
2011/03/29(火) 17:41:55.15struct st_list {
alias st_list *prev;
alias st_list *next;
void *data;
};
assert(st_list.sizeof == 8); // safe
どういうことだってばよ?
0684デフォルトの名無しさん
2011/03/29(火) 18:20:48.380685デフォルトの名無しさん
2011/03/29(火) 18:31:18.330686デフォルトの名無しさん
2011/03/29(火) 19:28:09.21こりゃ32bitでもダメっぽいな。失礼しました。
0687デフォルトの名無しさん
2011/03/29(火) 19:43:05.630688デフォルトの名無しさん
2011/03/29(火) 19:47:41.950689デフォルトの名無しさん
2011/03/29(火) 20:22:11.67いやなんか完璧に勘違いしてない?
0690デフォルトの名無しさん
2011/03/29(火) 20:26:09.64上のリンクは本家とは無関係
0691デフォルトの名無しさん
2011/03/29(火) 20:35:16.44えええ・・
0692デフォルトの名無しさん
2011/03/29(火) 21:55:02.69落ちない
Ubuntu 10.10 64 bit
0693デフォルトの名無しさん
2011/03/29(火) 21:57:08.17win7-64bit dmd 2.052
ちゃんと落ちないなんてどうしちゃったのうちのdmd…
0694デフォルトの名無しさん
2011/03/30(水) 00:33:41.18T i;
this(T i) pure
{
this.i = i;
}
}
を-Hスイッチでdiファイルにするとpureが消えますが、これはdmd2.052の仕様ですか。
Foo!(T) bar(T)(T i) pure
{
return typeof(return)(i);
}
とか出来なくなる。SciDやろうとしてハマった。
0696デフォルトの名無しさん
2011/03/30(水) 02:00:53.732.048で落ちた小数点を探しに行ってなんとなく落ちるぽい動作だな
最新版だと直ってる
0697デフォルトの名無しさん
2011/03/30(水) 10:42:05.11http://www.steinmole.de/d/
こいつの中の人に言ってくれよ・・。
少し前まで(32bitで)12になって動いてて、そのまま気づかなかったんだよ。
-m64で構造体のサイズがmysql.hの定義とズレまくって
大変だったと言いたかっただけなんだorz
0698デフォルトの名無しさん
2011/03/31(木) 23:33:20.05int i;
int* p = &i;
writeln(i.sizeof); //-m32でも-64でも4
writeln(p.sizeof); //-m32だと4で-m64だと8
}
これが原因でSDLでセグメンテーションエラーとか出る。
具体的には-m64で
auto screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
すると、screen.format以降がずれずれ。
こういうのってどうしようもないの?
0699デフォルトの名無しさん
2011/03/31(木) 23:47:30.120700デフォルトの名無しさん
2011/03/31(木) 23:47:51.89というかなんでないんだろう
0701デフォルトの名無しさん
2011/04/01(金) 00:06:09.100702デフォルトの名無しさん
2011/04/01(金) 06:58:37.29extern(C) SDL_Surface* SDL_SetVideoMode(int_ptr, int_ptr, int_ptr, Uint32);
auto screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
これでどうだろ?
まあSDLが64bit対応してなかったらどっちにしろ詰むわけだが
0703デフォルトの名無しさん
2011/04/01(金) 08:30:33.810704デフォルトの名無しさん
2011/04/01(金) 15:26:57.53printf("%d", sizeof(MYSQL)); => 1248
// D MySQL Driver + DMD2.052 -m64
writeln(MYSQL.sizeof); => 1040
( ゚д゚)…
!
(゚д゚ )
version(X86_64) {
struct MYSQL { byte[1248] a; }
}
今は反省してない。
0705デフォルトの名無しさん
2011/04/01(金) 19:28:24.07おおマジか…
sizediff_tとかhash_tみたいな意味不明の型は何もimportしないでも使えるというのにどうしてそんな差別を
0706デフォルトの名無しさん
2011/04/01(金) 21:06:04.68構造体の定義を全部64bit用に調整してやるしかないんじゃないかな
大丈夫だSDLの構造体はそんなにいっぱいない
0707デフォルトの名無しさん
2011/04/01(金) 21:28:07.780708デフォルトの名無しさん
2011/04/01(金) 21:34:09.120709デフォルトの名無しさん
2011/04/01(金) 21:49:54.34マーケティングに踊らされていないか
オール電化に似た負のイメージしかない
0710デフォルトの名無しさん
2011/04/01(金) 21:53:43.460711デフォルトの名無しさん
2011/04/01(金) 22:00:23.80x86の場合はレジスタ数が増える恩恵のほうがでかいし、各プラットフォームともにここぞとばかりにABIを改良してたりするからなあ
……という話をしようと思えば他所にいくべきですねわかりましたごめんなさい
0712デフォルトの名無しさん
2011/04/01(金) 23:02:45.4064bit対応のことはよくわからんけど
・SDLのバイナリが64bitで構築されているか?
・ヘッダが64bitのラッパーになっているか?(htodは対応してないはず)
・import libが64bit用で生成されているか?(またOMF変換とか一手間かかるの?)
・Dアプリを64bitで記述・コンパイルしているか?( -m64の部分 )
あとWinでSDL使ったらSDL_ImageだのSDL_mixerだのさらにzlibだの
依存が多くてうんざりしたがそいつらみんな64bitなの? とか
derelictは対応してるの? とか
1つ1つ潰してみては
0713デフォルトの名無しさん
2011/04/01(金) 23:06:14.430714デフォルトの名無しさん
2011/04/01(金) 23:49:35.030715デフォルトの名無しさん
2011/04/02(土) 00:04:31.05一応Windowsはバイナリ互換性が保証されてるわけだし。
0716デフォルトの名無しさん
2011/04/02(土) 09:54:52.90デフォルトのリポジトリにあったlibsdlを入れてるから、64bit版で間違いはないはず。
で、使ってるDインポートファイルの抜粋↓
align(4)
struct SDL_Surface
{
Uint32 flags;
SDL_PixelFormat* format;
int w, h;
Uint16 pitch;
void* pixels;
int offset;
private_hwdata* hwdata;
SDL_Rect clip_rect;
Uint32 unused1;
Uint32 locked;
SDL_BlitMap* map;
uint format_version;
int refcount;
}
extern(C) SDL_Surface* SDL_SetVideoMode(int width, int height, int bpp, Uint32 flags);
これをどうすれば
0717デフォルトの名無しさん
2011/04/02(土) 10:03:48.10if (SDL_Init(SDL_INIT_VIDEO) < 0)
throw new Error("SDL_Init failed.");
scope(exit) SDL_Quit();
SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
if (screen is null)
throw new Error("SDL_SetVideoMode failed.");
writeln(screen.fags);// 0
writeln(screen.format);// XXXXXXXXFFFFFFFF ← !!
writeln(screen.w);// 0 ← あー
writeln(screen.h);// 640 ← はいズレたー
0718デフォルトの名無しさん
2011/04/02(土) 10:04:22.210719デフォルトの名無しさん
2011/04/02(土) 10:08:00.020720デフォルトの名無しさん
2011/04/02(土) 10:31:22.49くそー、今試せない
0721デフォルトの名無しさん
2011/04/02(土) 11:03:15.36たぶんそう
SDLの構造体はVC、CodeWarrior、Borlandだと4Byteアライメントが指定されてるけど他はないっぽい
ubuntuならたぶんGCCだろうからalign(4)だとずれるかもしれない。特に64bit
SDLのヘッダに、「ディスクからロードした時の為に4Byteで揃えてます」みたいに書いてあるけど
これは嘘ってことだな
0722デフォルトの名無しさん
2011/04/02(土) 15:16:57.92SDL_Surface構造体の各メンバの配置位置とサイズを確認すべきじゃない?
配置位置は、構造体先頭ポインタとメンバのポインタの差から
サイズは、sizeofで
|: / : : : / : : : : :.i: : : : |: : : :|: : : |: : : i '
: :|: : : : |: : i: : : :|: : : /i|: : :|:| : : :|: : : | |
: :|: : : : |: :.|:斗 十‐/ i|: :∧-‐ト|: : : | |
: :|: : : : |イ|: :|:/ |:/ |:/ |ハ: : |: : : | \_,ノ
: :|: : : : | レヤ示ト rテv|:./|: : : :|
ヽ|: : : : |/{:::::::i } トイ レ: :|/|/ 関東地方
( |: : : : 代c::ノソ レリ |: : : : | 東北地方 北海道地方
.〈.|: : : : |x`¨ 、¨x.|: : : i:| にいる
\|i: : : :| , /|: : : i:| すべての 愛すべき 国民へ 告ぐ
∨リ\: :iト 、 `´ ィ |: : /|リ
‐┴―\|- 〈 >rァ 爪|V |/
:::::::::::::::::::::::ヽ \ リ
::::::::::::::::::::::::__\
:::::::::::::::/ ::r――‐へ rっr‐-、_
:::::::::/ ::// ∧. | ̄ ̄ ̄| | | | | ̄ ̄ ̄ ̄ ̄ ̄ ̄|
:::/ ::/ / ヽ|. L|_|_ト' |
/ ::::/ / \ ただちに 逃げろ |
. :::/ |/ | |.........
0724デフォルトの名無しさん
2011/04/03(日) 14:09:44.24ttp://homepage2.nifty.com/h-shioi/Earthquake/Note/ShioiNote.htm
0725デフォルトの名無しさん
2011/04/03(日) 16:30:25.07D2でIDEを作れないことの方が問題だと
でもDFLのforkといいgtkDの復活といい状況よくなってきてるな
0726デフォルトの名無しさん
2011/04/03(日) 16:47:29.730727デフォルトの名無しさん
2011/04/03(日) 16:47:58.930728デフォルトの名無しさん
2011/04/03(日) 17:39:48.800729デフォルトの名無しさん
2011/04/03(日) 18:13:22.36はるかに楽な気もするが
文字列ミックスインがにくい!
CTFEがにくい!
DMDのよくわからない挙動が(ry
0730デフォルトの名無しさん
2011/04/03(日) 18:14:45.210731デフォルトの名無しさん
2011/04/03(日) 18:50:00.480732デフォルトの名無しさん
2011/04/03(日) 18:54:03.980733デフォルトの名無しさん
2011/04/03(日) 20:54:21.160734デフォルトの名無しさん
2011/04/03(日) 21:00:16.87DXlibでやるならば手伝う。
0735デフォルトの名無しさん
2011/04/03(日) 21:03:21.320736デフォルトの名無しさん
2011/04/03(日) 21:10:56.260737デフォルトの名無しさん
2011/04/03(日) 21:17:03.560738デフォルトの名無しさん
2011/04/03(日) 21:33:27.600739デフォルトの名無しさん
2011/04/03(日) 21:35:14.000740デフォルトの名無しさん
2011/04/03(日) 21:38:28.520741デフォルトの名無しさん
2011/04/03(日) 21:39:04.12俺は本気で手伝うぞ
0742デフォルトの名無しさん
2011/04/03(日) 21:42:44.840743デフォルトの名無しさん
2011/04/03(日) 21:53:12.352Dでいいとも思うけど。
0744デフォルトの名無しさん
2011/04/03(日) 22:06:53.750745デフォルトの名無しさん
2011/04/03(日) 22:09:14.58芝が生えるゲームどこ行ってもうたんや…
0746デフォルトの名無しさん
2011/04/03(日) 22:13:00.30チームでゲームを作る上でもっとも大切なのはポジショニング。
0747デフォルトの名無しさん
2011/04/03(日) 22:17:29.80それよりD言語でD言語のマスコットキャラの育成ゲーム作ろうずwww
0748デフォルトの名無しさん
2011/04/03(日) 22:18:46.140749デフォルトの名無しさん
2011/04/03(日) 22:19:30.490750デフォルトの名無しさん
2011/04/03(日) 22:26:04.15あるあ……あるあるwww
0751デフォルトの名無しさん
2011/04/03(日) 22:33:01.620752デフォルトの名無しさん
2011/04/03(日) 22:41:24.160753デフォルトの名無しさん
2011/04/03(日) 23:01:20.66うざいポーズでよけまくるゲームを
0754デフォルトの名無しさん
2011/04/03(日) 23:01:27.96■ このスレッドは過去ログ倉庫に格納されています