- 1 名前:デフォルトの名無しさん [2007/09/03(月) 01:00:06 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.41【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1186410368/l50 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 2 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:17:26 ]
- みんなのCの勉強法は?っていうFAQの続きで新スレスタート
はじめは、書きたいように書けばいいんだよ それより、まず1行、書き始めようや 昨年書いた自分のコードを、今の自分ならイチから書き直したくなる そんな気持ちにすらなる アマチュアなら、それでいいのではないかと 処理系を聞いてるくらいだから、まずコンパイラセットアップからはじめようや VCExpressでもいいよ 他言語経験者なら、まずhello world 通すことからはじめようや プロ(ルーキー)なら、先輩に聞け 聞ける先輩がいないなら、そんな先輩を探せ >>1 乙です
- 3 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:20:14 ]
- 1年前のコードを見て自分が確実に劣化しているのを感じたんだが、
同じように感じる人って少ないのかな?
- 4 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:20:47 ]
- >>3
30過ぎると普通だよそれ
- 5 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:23:11 ]
- sfのコードは美しいばかりではない
玉石混交なのはもちろん、動くことを優先に、意図的にやっつけコード書いてることもある コメントも読んで、書いた人の心理まで読んで欲しい >>3 あるある、今の自分の鈍り具合を見て萎える 昨年のほうがましだったってね 正直なにくそだ
- 6 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:55:21 ]
- void*型にメンバポインタはやっぱりどうしても入らないの?
代わりにどんなメンバポインタでも入る型は存在しないの?
- 7 名前:デフォルトの名無しさん [2007/09/03(月) 20:26:12 ]
- 前スレの965です
971さんの言う通りqのシグナルを送ってみたいと考えていました いろいろありがとうございます system使わないで実装がんばります(´・ω・`)ゞ
- 8 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:40:52 ]
- >>6
そもそも変数のサイズが違うことがあるからねえ。 メンバポインタへのポインタなら入るyp
- 9 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:10:19 ]
- BCB6のメンバ関数ポインタは12バイト。参考までに。
- 10 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:42:35 ]
- ありがとう!
- 11 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:50:03 ]
- >>9
ポぃンタってアドレスの入る箱でしょ.アドレス格納箱って32bitOSだと4バイトじゃないの? それが、12バイトなんて信じられないぞなもし....なんで肥ったの????
- 12 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:54:45 ]
- アドレスとは定義されてない
- 13 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:05:49 ]
- C++3rd 15.5「メンバポインタ」の項を読むといい。
「メンバポインタは、変数ポインタや関数ポインタとは異なり、メモリの位置を指すポインタではない。 メンバポインタは、ポインタというよりも構造体オフセット、配列の添え字に近い。」
- 14 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:22:19 ]
- メンバ関数へのポインタは、
非仮想関数の場合アドレスを、 仮想関数の場合vtblのオフセットを保持するようになっている。 もちろんどっちを保持しているかのフラグも要るし、 多重継承などで複数のvtblがある場合も考えなければいけないし、 そうしてぶくぶくふくれていく。
- 15 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:22:59 ]
- 14はもちろん例えばの話ね。
- 16 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 03:07:04 ]
- >>13のは、主にメンバ変数へのポインタの話。
>>9のは、独自拡張のいわゆる__closureの影響。
- 17 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 10:28:56 ]
- WinAPIの話なんですが、C/C++の型についてなので、ここで質問させてもらいます。
LPARAMの値lpを SetWindowLongPtr(wnd, DWLP_USER, lp); として設定すると、「LPARAMからLONGへの変換。データが失われる可能性がある」と出てきます。 LPARAMもLONGも、元をたどれば同じlongなので、データが変わることはないと思ったんですが… また、hoge *h; ていうクラスのポインタがあって、 h = reinterpret_cast<hoge *>(GetWindowLongPtr(wnd, DWLP_USER)); とすると、「LONGからより大きいサイズの hoge * へ変換します」と出てきます。 ↑2つとも、自分の環境だと自分の期待通り動いてるんですが、 64ビット環境とか、他の環境だと動かない可能性があると言うことでしょうか。 # そもそも、SetWindowLongPtrの第3引数や、GetWindowLongPtrの戻り値の型はLONG_PTRだと、 MSDNライブラリに書いてあるんですが、なぜLONGなのだろう…
- 18 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 10:47:52 ]
- >>17
msdn2.microsoft.com/en-us/library/aa383751.aspx
- 19 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 10:52:00 ]
- >>17
>64ビット環境とか、他の環境だと動かない可能性があると言うことでしょうか。 そのとおり。 ただし、32ビットOSでは現在でもSetWindowLongPtrはSetWindowLongの別名として マクロ定義されているだけなので、MSDNでは第3パラメタがLONG_PTRになっているが、 ヘッダの宣言ではSetWindowLongと同じLONGのままの扱い。 そのために警告として表示されると思われる。 >なぜLONGなのだろう… WindowsAPIは当初から64ビット対応されてたわけではない。 以前はポインタやハンドルをLONGやDWORDで扱っている箇所があった。 64ビット対応したとき、単純にいままでLONGだった箇所はLONG_PTRに、 DWORDだった箇所はDWORD_PTRに変更したと思われ。
- 20 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 10:57:10 ]
- あ、そのとおりってことはないな。
19に書いたとおり、32ビットOSでの警告は現在の実装(ヘッダ)の問題と 思われるので、その警告は無視してよい、かな。
- 21 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 22:10:11 ]
- boost::function<bool (int, int)>;
このテンプレート部分はどうやって取得すればいいんでしょうか。 ああああああああああああああああああああああああ
- 22 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 22:13:18 ]
- テンプレート 引数
ひきすう いんすう hikisuu innsuu hikky
- 23 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 22:21:34 ]
- >>21
template<class T> void func(boost::function<T> &f) { ... } じゃダメなん?
- 24 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 22:32:31 ]
- type1 (type2, type3, type4 .......)
からどうやって、 type1 type2 type3 type4 をそれぞれ得るか?
- 25 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:28:43 ]
- 「sizeof演算子は、size_t型の整数値を返す」と習いましたが、size_t型はC/C++の予約語ではなく、
どこかのヘッダファイル(VC2005だとcrtdefs.hにありました)にtypedefされている型だと思うんですが…。 でも「何も」includeしなくてもsizeof演算子は使える…。 というかsize_tも使える…。なんでsize_tが定義されてないのに使えるのでしょうか。コンパイラマジック? こんなこと気にしてたら禿げますかね
- 26 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:30:37 ]
- コンパイラマジックです。
- 27 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:33:28 ]
- >>25
sizeofは、コンパイラがsize_tのtypedef元として 使うであろう整数型を結果とするということ。 コンパイラとライブラリは、全くの別物が 無関係に作るということが(おそらく)ないので、 これでうまくいくはず。
- 28 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:34:35 ]
- 定義されていなければ使えない
使える→どこかで定義されている 探せ
- 29 名前:デフォルトの名無しさん [2007/09/05(水) 00:25:42 ]
- すみません
C言語でSocketを用いて通信する場合は サーバー・クライアント両方とも C言語で設計されていなくとも通信できるのですか?
- 30 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:29:58 ]
- >>29
出来る。 あたりまえだろ。
- 31 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:32:02 ]
- >>29
まったく問題ない 極端にいえば、アセンブラでソケットライブラリ叩いても結構 一見ばかばかしいとも思えるけど、FAQらしいのでマジレス
- 32 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:37:38 ]
- せっかくなので、前見たなーってのを探してきた
たぶん、こういうニュアンスもあるんじゃないかと思う 2.5 - Can I use Winsock with { My Favorite Language }? tangentsoft.net/wskfaq/newbie.html#langcompat
- 33 名前:デフォルトの名無しさん [2007/09/05(水) 01:03:39 ]
- Cで16進数の FFC8D6 という値があったとして
それぞれ FF と C8 と D6 を取り出したいんですが どうすればいいんですか? 何となくシフトすれば良いって気もしないでもないんですが・・・
|

|