1 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:03:42 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.54【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1210694402/l50 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
2 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:04:16 ] おつ
3 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:08:01 ] 壱乙
4 名前:デフォルトの名無しさん [2008/06/15(日) 03:23:26 ] おついち
5 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:25:08 ] 乙一
6 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:42:21 ] インデントの話だが・・・ 俺はどっちでもおk派。VCに貼り付けてCtrl + spaceで一発解決w
7 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:24:40 ] (・ω・`)1乙 ←ポニーテール  は思いつかなかったな〜 ちょっとてst >>6 まぁでもコピペすらしない人多いと思うよw
8 名前:7 mailto:sage [2008/06/15(日) 11:30:45 ] あぁん俺の環境じゃ も潰れるw f();   f(); f(); 	
9 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:40:37 ] 連投ごめん。ちょっとレス参照を。>>8
10 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:54:36 ] ■>>8 で書き込み時の文    f();   f();   	f(); 	 ■>>8 を素のIE/禁断の壷+IEで表示及びコピペした場合 の部分が潰れずに空白になる。コピペしても通常の半角空白。 他は潰れて消える。 ■>>8 をjaneで表示及びコピペした場合  の部分が潰れずに空白になる。コピペしても通常の半角空白。 の部分はjane上では潰れずに空白になるけど、 コピペすると空白にならず、  になる。 &am;#9;は潰れて消える。 通常/専用ブラウザで読みやすくするのは全角スペースしかなさげ。 コピペしてすぐコンパイル出来るのも含めると、アップローダーしか無いね〜
11 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:01:42 ] ML系やHaskellやPythonみたいにインデントに文法上の意味がある言語は大変だよなー。 そういうスレを見てきた立場からすると「どうでもいいじゃん」って思ってしまう。
12 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:19:05 ] >>11 見てきたけど、Haskellスレでは全角スペース推奨、 Python宿題スレはロダ推奨で、全角スペースが使われてて、 Python初心者スレでは全角スペース(主に質問者)と が使われてるね。
13 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:43:48 ] >>10 乙 > 通常/専用ブラウザで読みやすくするのは全角スペースしかなさげ。 も表示だけなら潰れない、と読めたのだが気のせい? > コピペしてすぐコンパイル出来るのも含めると、アップローダーしか無いね〜 これはそのようだね
14 名前:10 mailto:sage [2008/06/15(日) 13:04:58 ] >>13 > も表示だけなら潰れない、と読めたのだが気のせい? ごめん素で間違えた。その通りです。
15 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:46:16 ] 2ch も pre コマンドを採用すればいいのにね。 メール欄に pre と書くと pre タグが使われるようにする奴。
16 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:53:46 ] だな
17 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:40:57 ] a=c; b=a; と a=b=c; って同じことですか?
18 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:45:13 ] ちがう
19 名前:デフォルトの名無しさん [2008/06/15(日) 15:48:08 ] まとめるとしたら b=a=c;だな
20 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:54:45 ] 厳密に考えればそれも違うけどね。
21 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:10:05 ] =は左結合だから b=a=c;⇔b=(a=c); でも a=cが、aにcを代入した後のものを返すか、それ以前のaを返すかは未定。
22 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:13:30 ] >>20 どう違うのか教えて欲しいです
23 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:15:14 ] まー、普通のプリミティブなデータ型なら、そこまで気にする必要はないだろうけどね 基本的には同じと思っていいよ ただ、それに囚われていちゃダメ C++ならoperatorでやりたい放題だし
24 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:15:38 ] >>22 20じゃないけど、 「ユーザー定義型のoperator=()の戻り値が、必ずしも*thisになってるとは限らない」 というのを考慮してるのでは。
25 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:16:57 ] アセンブリの話する気か?
26 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:34:24 ] aがvolatile指定されていた場合、 a=c; b=a; はaに対してwriteとreadが1回ずつ発生するが、 b=a=c; はaからreadする保証が無い。 ってことか?
27 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:42:39 ] 保証されると思う。
28 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:46:39 ] >>25 できるよ。 以上。 ↓次の方どうぞ
29 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:47:38 ] >>21 何を言っとるんだお前は
30 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:51:54 ] >>21 代入した値、つまりはcと同じ を返すに決まってるだろ個の貸す
31 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:08:16 ] CとC++を学び、そろそろGUIでゲームを作りたいのですが、 CかC++ベースでGUIプログラムを作るにはどうすればいいのでしょうか? 幅広く使用されている方法が望ましいです。
32 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:10:03 ] >>31 directXのラッパーライブラリあたりでも使えばいいんじゃない? dxlibとかyanesdkとか あとSDLとかでも
33 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:30:44 ] >>23 >>26 はちゃんとわかってるな。 論理上保障されないという事態が起きるのは、 bがスタティックな変数でかつ割り込みが発生してaを書き換えた場合だけ。 スレッドが絡むとさらにカオスになるから触れないでおこう。 それ以外では気にすることではない。
34 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:31:51 ] >bがスタティックな変数でかつ割り込みが発生してaを書き換えた場合だけ。 aがスタティックな変数でかつ割り込みが発生してaを書き換えた場合だけ。 ミスった
35 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:43:22 ] aがレジスタの場合も動作が違ってくる。 組み込み系の話だけど。
36 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:46:45 ] ああCPUその他のハードウェアによってはvolatileが 実現できない場合があるな
37 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:47:03 ] =演算子の式の値をどうコンパイラが解釈してるかなんだよね VC++2008の場合はvolatile bでbからロードしなおしていた
38 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:58:25 ] >>32 どもども、調べてみます。DirectXが王道ですかね
39 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:06:23 ] 初心者向けのゲーム作る用の本とかは店においてるのはよく見るな
40 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:12:25 ] >>17 の俺は勉強始めたての素人で 今はまだ皆さんの回答の意味が理解できなさそうなのでとりあえず a=b=cじゃなくてb=a=cだったら 同じことではないけどだいたい同じ とだけ覚えておきます ありがとうございました
41 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:19:21 ] 今勉強したての素人から脱したんだよ。
42 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:23:01 ] 普通にやってたら、この程度のことまず気にしてねーもんなw まー、俺は=演算子を1行に複数に書くこと自体やらないが
43 名前:デフォルトの名無しさん [2008/06/15(日) 19:42:15 ] 質問です 環境はWindowsXP,言語はCです. system関数(またはそれに近い関数)を使って別のプログラムを時間制限付きで起動させたいです 例えば,a.exeというプログラムを実行させて,30秒たっても処理が完了していなかったらa.exeを強制終了させたいです. なにか良い方法はありますか
44 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:50:17 ] >>43 CreateProcess / TerminateProcess
45 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:56:40 ] >>43-44 内容にもよるけど、行儀のいい方法では無いな。
46 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:40:58 ] でも行儀のいい方法は書かないんだね。
47 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:43:40 ] 処理が完了という判断は、a.exeのプロセスが生きているかどうかだけでいいのか?
48 名前:43 [2008/06/15(日) 22:20:34 ] >>47 すみません,書き忘れました. a.exe は処理が完了したら終了します. >>44 どもありがとうございます 調べてみます
49 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:25:59 ] >>46 強制終了って前提条件が既に行儀悪いからな。
50 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:16:20 ] 普通は数秒で終わるものがバグとかで終了しなかった場合、じゃないの? 俺はそう思ったけど。
51 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:18:47 ] 相手がコンソールプログラムならGenerateConsoleCtrlEventの方が 少しはマシかな。
52 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:23:19 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6924.txt このポインタについてなんですが p->nextには何のアドレスも入ってないのに 何で次の人のアドレスを指し示すことができるんでしょうか? あるいはどこかでp->nextに何かの値が入ってるんでしょうか?
53 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:23:19 ] #define offsetof(type, member) ((size_t)&((type*)0)->member) このマクロの(type*)0->memberはどういう意味なのでしょうか? 0番地のtype型のメンバ変数memberでよいのでしょうか?
54 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:28:41 ] >>53 そのとおりなんだけど、実際にはそんなものは存在しなくて、直後にアドレスを size_t に 無理やり変更することで offsetof() が返すべき値を取り出している、というところまで 合わせて意味を持つ。コンパイラの実装を知っている立場でなければ、真似しちゃいけない。
55 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:35:18 ] >>52 よく読んでないけど last->next=p で入れてるんじゃね
56 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 03:40:04 ] >>52 last->next=p; last=p; と分ければわかりやすいでしょうか。
57 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:50:32 ] >>55-56 ありがとうございます もう少しで分かりそうなんでもうちょっと頑張ります
58 名前:デフォルトの名無しさん [2008/06/16(月) 16:11:09 ] 事情によりコードはupできなくて申し訳ないのですが、質問させて下さい。 ヘッダで宣言したメンバ関数を.ccで実装するとき、いくつかの関数でmultiple definitionと言われてコンパイルできません。 インクルードガードはもちろんかけています。例えば、 [foo.h] #ifndef _FOO_H_ #define _FOO_H_ class foo{ private: int a,b,c; pulic int getA(); int getB(); int getC(); } #endif [foo.cc] #include "foo.h" int foo::getA(){return a;} int foo::getB(){return b;} int foo::getC(){return c;} とかなっているときに、getAはOKなのにgetBとgetCのみmultiple definitionと言われるような状況です。 他にも、引数なしのコンストラクタはOKなのに、引数付きでオーバーロードしたコンストラクタのみ mutiple definitonと言われたりします。 これらの現象は全て、問題の関数実装時にinline宣言すると消えます。これはどういう問題なのでしょうか。
59 名前:58 [2008/06/16(月) 16:12:37 ] すみません>>58 で、 public のあとに:が抜けてました。 実際のコードではそういったミスはありません。
60 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 16:17:19 ] >>58 現象を再現できる最低限の断片を作って張ってくれ。 尤も、その過程で原因が判ることもしばしばだが。 例えば、getA()がエラーにならないのは使ってないからじゃないかと思うが>58だけでは判断できん。
61 名前:58 [2008/06/16(月) 16:33:55 ] >>60 すみませんが今すぐは作れないので、後でまた張りに来たいと思います。
62 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:23:38 ] Cから呼び出したDLL内でEXCEPTION_ACCESS_VIOLATION (0xc0000005) が発生した場合、それをC側から補足できますでしょうか? 例外が発生したことを上の関数に返したいのですが 難しいでしょうか? よろしくお願いいたします。
63 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:42:36 ] >>62 Windowsの話なら、WinAPIスレで過去に話題になってたかと。
64 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:48:36 ] >>63 ありがとうございます。APIスレにいってきます。
65 名前:58 [2008/06/16(月) 19:27:04 ] >>60 色々やってたら解決しました。 どうも元々ひとつだったヘッダファイルを細分化したときに、makefileの方で変なことをやってしまったのが原因ぽいです。 どうもありがとうございました。
66 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:05:22 ] なんでカウント変数にiを使うのですか? なにかの略なんですか?
67 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:07:00 ] iterator
68 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:10:53 ] indexの説もあったような
69 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:13:03 ] 特に理由は無いけどindexだと思ってた。idxってのもよくあるし
70 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:15:12 ] 古代FORTRANで、一文字トークンにaからhが予約されていて ユーザーが自由に使えるものがiからしかなかったのがそもそもの由来。
71 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:17:04 ] それたまに聞くけど、 n Σa_i i=1 とか数学で使う際の i って FORTRAN 以降で広まったものなのか?
72 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:22:38 ] 古代FORTRANの場合宣言なしで使える変数があって、 I,J,K,L,M,Nあたりが宣言なしで整数、 それ以外が宣言なしで実数だった。
73 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:24:29 ] ありがとうございます
74 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:56:52 ] >>71 まさか。 もっと昔から使われてるよ。
75 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:57:14 ] >>72 そもそも整数がその範囲に割り当てられた理由もあるんじゃね?
76 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:57:48 ] >>74 ですよねー。
77 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:58:55 ] FORTRAN は数式を扱うことを目的に作られたから イテレーションによく使われていた i から始まり、 整数値としてよく使われていた n までを整数にした、 と考えるのが自然な気がするよ。
78 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:10:58 ] FORTRANのiはintegerのiだな。
79 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:16:35 ] 数学で使われる方のiがintegerのiとは考えんのかね。
80 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:17:57 ] indexのiにきまってるだろ。
81 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:24:20 ] H の後に I があるなんてJokeだよ
82 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:00:56 ] LinuxもしくはOS Xでgccを使った場合の質問です。 - /usr/local/lib/libFOO.a - bar.cxx の2つがあり、bar.oとlibFOO.aを合体させて、 libbar.soというのを作りたいと思っています。 (libFOO.aも共有ライブラリの中に組み込んでしまいたい) この場合、 $ g++ bar.cxx -o bar.o したあとに、どのようにすれば良いのでしょうか。
83 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:23:06 ] マニュアルを読めばいいと思うよ
84 名前:82 [2008/06/17(火) 01:23:16 ] なんでそんなことをする必要があるかと言うと、 色々なライブラリを必要に応じて読み込むソフトがありまして、 そいつに自作のライブラリを読み込ませるためには、 必ず共有ライブラリじゃないと駄目なんです。 なので、libFOO.aを読み込ませる場合には、 一回自分で共有ライブラリを作らないといけない、と。
85 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:32:25 ] >>84 分かりました、マニュアルを読んでくさい
86 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:26:59 ] >>84 www.google.com/search?q= 共有ライブラリ gcc
87 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 08:39:42 ] >>81 HしてもIがなかったらJuniorが生まれてこないとは考えんのかね。
88 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:57:29 ] >>87 望まれないJuniorっていう不幸もあるからなぁ
89 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:19:32 ] Knockが足りなかったんだろう
90 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:21:14 ] つまんないからやめろ
91 名前:デフォルトの名無しさん [2008/06/17(火) 19:06:29 ] 抽象的な質問で申し訳ないですが あるクラスのメンバ関数を実装するとき、内部の処理をベタ書きすると 長くなるので、関数化したいことは良くあると思います。 このとき、その関数化したい処理そのものは、もとのメンバ関数の処理に比べて 低級な処理なので、同じクラスのメンバ関数として定義するのには違和感があります。 かといって、専用のクラスを作るほどではないと感じる場合があります。 こういう場合、どういった形で関数を定義するべきでしょうか。 例えば、積分をするためのループ処理1ステップ分を関数化して切り出したい場合などです。
92 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:07:38 ] よくわからんがprivate関数じゃだめなの?
93 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:09:35 ] アクセス制御で外からは見えない関数にすればいいよね
94 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:14:42 ] 内部クラスの静的メソッドでいいよ。
95 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:31:17 ] ttp://www.cmagazine.jp/ C言語の本を買ったのですがサンプルソースのあるページにアクセスできません? アク禁になっているのか知りたいので他の人アクセスできるか試してもらえませんか;;
96 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:42:58 ] >>91 自分専用ライブラリを放り込んでおく場所を決めておくと良いよ。
97 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:43:16 ] Cマガ休刊したんじゃないっけ?
98 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:47:50 ] >>95 こんなときこそあれだ web.archive.org/web/20060423121809/www.cmagazine.jp/src/index.html
99 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:01:15 ] >>98 そのサイトもアクセスできません・・・。 スレ違いですが質問させてください。 代わりにソースプログラムを配布しているサイトご存じないですか?
100 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:03:59 ] >>98 で落とせるけど。 文字コードは EUC な。