- 1 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:56:37 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/ スレを勃てるまでもないC/C++の質問はここで 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ スレを勃てるまでもないC/C++の質問はここで 11 pc12.2ch.net/test/read.cgi/tech/1245059383/ スレを勃てるまでもないC/C++の質問はここで 12 pc12.2ch.net/test/read.cgi/tech/1248010352/
- 75 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 00:23:38 ]
- CやってからC++のstring比べれば天国だろ。
- 76 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 01:48:11 ]
- >>66
初めからなんでも用意してある環境が欲しいなら、C/C++はおすすめできない。
- 77 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 12:08:41 ]
- C++0xだと任意長テンプレートが組み込まれてるらしいですが、今はまだですよね
make_tupleのように任意長のテンプレートはどうやって作ってるんでしょうか?
- 78 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 12:42:33 ]
- >>73
つ[配列にするほどでも、構造体にするほどでもないとき]
- 79 名前:74 mailto:sage [2009/12/25(金) 20:23:31 ]
- >>75
確かにCやってからのstd::stringには泣いた。
- 80 名前:デフォルトの名無しさん [2009/12/26(土) 18:57:20 ]
- ふーん
- 81 名前:74 mailto:sage [2009/12/26(土) 19:16:32 ]
- >>80
お前も俺達と一緒に泣けよ!
- 82 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 11:39:50 ]
- 文字列すべてに MFC の CString 使ってるバカの所為で
Linux への移植が大変だった、って意味では俺も泣いていいかな。
- 83 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 11:44:00 ]
- CString作っちゃえ
- 84 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 11:57:43 ]
- >>82
まて、そんなMFCのCStringだなんてクソと一緒にするな。 std::stringで書いてあればその苦労は全く無かったはずだ。全く。
- 85 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 09:47:25 ]
- ちょいと相談。
template<class T>class Settings { // }; struct Arecord { // }; class Asettings : Settings<Arecord> { // }; こんなクラス構造があると思いねぇ。勿論、Aの他にもBやCもある。 んでもって、一々Arecordとするのも業腹だから class Asettingsの中でstruct Record としてしまいたいってわけだ。 するってぇと、定義の順番の都合で巧くコンパイルできねぇ。 どうしたもんかね、こりゃ。
- 86 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 11:56:31 ]
- >>85
class Asettings が何か分からないから答えられぬ。
- 87 名前:86 mailto:sage [2009/12/29(火) 11:58:00 ]
- >>85
ごめんカンチガイした。 template<class T>class Settings { // }; struct Arecord; class Asettings : Settings<Arecord> { struct Arecord { // }; // }; これじゃだめなの?
- 88 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 13:09:02 ]
- >>87
ResTHX! それだとダメだった。 Arecordが::Arecordで宣言されて Asettings::Arecordで定義されるからだと思う。
- 89 名前:87 mailto:sage [2009/12/29(火) 16:10:09 ]
- >>88
> Arecordが::Arecordで宣言されて > Asettings::Arecordで定義されるからだと思う。 なるほど。たしかに。 Asettingsのクラス定義を分割できないって仕様がくせ者邪魔だなぁ。。
- 90 名前:87 mailto:sage [2009/12/29(火) 16:15:29 ]
- >>88
ttp://codepad.org/opJUGUor ここでは通ったけど 中身を実装するとやっぱダメっぽい?
- 91 名前:87 mailto:sage [2009/12/29(火) 16:17:33 ]
- >>88
ttp://codepad.org/YBqmrMtV こんなんも通ったよ。
- 92 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 17:13:14 ]
- >>91
残念ながら、これでアウト。外のArecordと内のArecordは別物なのよね。 ttp://codepad.org/eEpbQXgN
- 93 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 17:32:18 ]
- >>92
codepadでは確かに通らないが、 それはg++が古いからでは? 俺の g++ (TDM-2 mingw32) 4.4.1 および Comeauの www.comeaucomputing.com/tryitout/ このサイトでは通ったよ。
- 94 名前:>87 >93 ◆Nsutagdmm. mailto:sage [2009/12/29(火) 17:47:01 ]
- ちなみに
VC++ 2008でもbcc5.5.1でも通ったよ。
- 95 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 18:03:57 ]
- うーむ。gcc3が通らないのが問題なのか。情報THX!
- 96 名前:87 ◆Nsutagdmm. mailto:sage [2009/12/29(火) 19:03:18 ]
- ttp://codepad.org/XX7ZGdkK
ちなみにこのソースはそちらの手元では通る?
- 97 名前:デフォルトの名無しさん [2009/12/30(水) 10:46:28 ]
- 私のコーディングスタイルって変ですか?
structが引数になるときは参照渡し、 classの時はポインタ渡し、 としているのですが、変ですか? struct Point; class Object; Point Add(const Point &p1, const Point &p2); shared_ptr<Object> Get(Object* base); って感じなんですが・・・(^^;)
- 98 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 10:49:31 ]
- 変です
- 99 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 10:51:43 ]
- そういう風に区別する必要性がないと思うよ。
ほとんどの場合参照で渡せば問題ないはず。 ポインタで渡すのは、nullの状態を作りたい場合くらいかな。
- 100 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 11:00:29 ]
- structもclassも基本的には同じものだからね
区別する方がおかしい structで書いたらダメ出しする老害は死ぬがいいよ
- 101 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 11:06:32 ]
- structで書いてダメ出しされたのかw
- 102 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 11:12:52 ]
- classはprivateがデフォルト、structはpublicがデフォルトなのが微妙な位置づけの違いだろうね。
個人的には、structはデーター構造作るときにアライン合わせるときとか、ただのメンバ変数の集合体を作るときだけとしている。 boostのソース読むときはclassとstructがごっちゃになってるので読みづらいな。明確な使い分けの無いほぼ同じ機能の構文が複数あるのは勘弁してほしいよ。
- 103 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 11:31:46 ]
- そんなんがC++にはいっぱいあるよな(笑)
俺もstructはメンバ変数やメンバ関数含めほぼ全部publicにしているよ。 (つまりPODとまでは行かないが相当小さい簡易的なもの。) 全部publicでも大きなものはclassとしている。 逆に一つでもprivateにしたい場合はかなりの割合でclassとしている。 要は、読み手の受ける印象の違いだろうけどさ。
- 104 名前:97 [2009/12/30(水) 11:53:59 ]
- わたしもstructはデータ、classはクラス(?)と扱うものとしてます・・・
なんかそっちのほうが個人的には読みやすいので (^^; あと、クラスに参照だと基底クラスにキャストすることはできるのかな、とか思って。 趣味グラマなんでそこらへんがよくわかんないですm(_ _)m
- 105 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 12:15:07 ]
- >>104
あー、まだその辺な訳ね。 ずいぶんと因果な言語を選んだね君(笑) > クラスに参照だと基底クラスにキャストすることはできるのか 正確にはキャストじゃなくて暗黙の型変換の話だよね? できます。 生ポインタで渡すのはあまり綺麗なスタイルではないことが多い。 (わざとポインタにすることもあるけど) C++例外処理プログラミング ttp://www.02.246.ne.jp/~torutk/cxx/exception/programming.html この辺も読んだ方が良いかも。
- 106 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 12:15:28 ]
- >>104 できるよ!!だから安心して参照を使ってね♥
- 107 名前:デフォルトの名無しさん [2009/12/30(水) 14:48:51 ]
- すごく基本的な質問ですが・・・
char **c = new char*[5]; と char *c[5]; って、どういう違いがあるんでしょうか? deleteはどっちの場合も必要?
- 108 名前:97 [2009/12/30(水) 14:52:20 ]
- レスありがとうございます♪
そういえば参照を使う時でもshared_ptrは値渡しでいいんですよね??
- 109 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 15:04:54 ]
- >>107
newとdeleteは1対1で対応するべきものです newが無いのにdeleteしていたり、newしているのにdeleteが無いのは、どこか間違っている可能性が高いです
- 110 名前:105 mailto:sage [2009/12/30(水) 15:05:06 ]
- >>108
値渡しじゃなくて、 「値渡しと同じ書き方」ね。 いいよ。 というかそれができるのが参照の利点なのさ。
- 111 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 15:05:53 ]
- >>107
まず > char *c = new char[5]; > と > char c[5]; で考えてはいかがですか?
- 112 名前:107 [2009/12/30(水) 15:31:31 ]
- 回答ありがとうございます。
char *c = new char[5]; と char c[5]; の場合は、後者には他の文字列ポインタを代入できないというくらいで 基本的には同じような扱い方でOKなんですよね? で、関数を抜けるときは前者のみdeleteが必要ということですよね? char **c = new char*[5]; と char *c[5]; の場合のnewとdeleteの対応ですが、 後者はポインタの配列になると思うのですが 各要素に個別にnewを使っていた場合は、 また個別にdeleteしていくしかないということになるんですか? 関数を抜けるときに配列自体が開放される(?)ので ついでに要素についても自動的に開放されるということはないのでしょうか?
- 113 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 15:32:20 ]
- 無いよ
- 114 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 15:40:03 ]
- std::string使え
- 115 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 16:05:48 ]
- >>112
前者に文字列ポインタを代入していいなんてどこに書いてあった? ここにそれを晒した上で窓から投げ捨てろ
- 116 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 16:39:41 ]
- >>112
配列のdeleteはdelete[]だから。 たとえば char* c=new char[5]; に対するデリートはdelete[] c;だよ。 個別というのが char* c[5]; c[0]=new char; という意味だったら、 delete c[0]は必要だから。 スコープから抜けるときに配列は消えるけど中身は消えないからね。 スマートポインタをぐぐると便利だよ。
- 117 名前:デフォルトの名無しさん [2009/12/30(水) 16:56:59 ]
- だれか絵を描いてうpしてやれ
- 118 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 17:06:25 ]
- > ついでに要素についても自動的に開放されるということはないのでしょうか?
そんな親切な言語じゃないところがC++のいいところであり悪い所でもある。
- 119 名前:107 [2009/12/30(水) 17:21:56 ]
- みなさんご回答ありがとうございます。
おかげさまで何となく理解できた気がします。 ポインタ関係はややこしいですね。 >>115 char *a = "abcd"; char b[5]; char *c = new char[5]; b = a; // エラー c = a; // 一応OK 上記のような意味で書いたのですが、用語の使い方を誤っていたかもしれません。
- 120 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 17:23:38 ]
- >c = a; // 一応OK
OKじゃねーよ。 newしたバッファはどっかいっちゃうぞ
- 121 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 17:26:18 ]
- 文法上は正しいが、やってはいけないことだな
- 122 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 17:33:35 ]
- ハッ!107はchar*はすべて文字列ポインタと呼んでるのか
そんな呼び方は窓から(ry
- 123 名前:111 mailto:sage [2009/12/30(水) 17:39:59 ]
- >>107はちゃんと一応OKって言っているじゃん。
確かに一応OKなんだよ。 リソースを開放する気がないんなら。 そういう嫌がらせプログラムを組みたくなったときに必要な知識だ。
- 124 名前:107 [2009/12/30(水) 17:51:20 ]
- 何度もすみません。
もう1点いいですか? char *b[5]; と char (*c)[5]; は別物になるんですか? どちらもポインタの配列なのではないかと思ったのですが、 入れ替えるとコンパイルが通らなくなるので・・・。 >>122 「文字列ポインタ」がまずかったですか?
- 125 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 17:58:15 ]
- >>124
前者はcharの*(ポインタ)が5個の配列 後者は、char が5個の配列の*(ポインタ)
- 126 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 18:52:27 ]
- まぁ、初心者が一度はドツボにはまるところだから仕方ない。
一度もはまらなかったらそれはそれで怖いし。
- 127 名前:107 [2009/12/30(水) 19:04:09 ]
- ありがとうございます。
なるほど、配列のポインタになってしまうんですね。 実験してみたところ、 char *(c[5]); だとポインタの配列で char (*c)[5]; だと配列のポインタという感じでした。 なんか直感と逆な感じがしますが・・・。
- 128 名前:111 mailto:sage [2009/12/30(水) 19:26:55 ]
- >>127
よし。 type ttp://wwws.kobe-c.ac.jp/deguchi/c/type.html 俺はこのページを紹介できる時を待っていたんだ(笑) とても分かりやすかったんで必見!!
- 129 名前:107 [2009/12/30(水) 20:44:54 ]
- とても有用なページを教えていただきありがとうございます。
つまり、char (*c)[5]; と宣言された変数cがあったとしたら、 そのcに対して (*c)[5] という操作をすれば char 型になるという意味なんですね。 ようやく飲み込めた気がします。 ですが、さらに疑問点が出て来ました(何度もすみません)。 1 : char (*a)[5]; // 配列のポインタ 2 : char *(b[5]); // ポインタの配列 3 : char c[5]; // 配列(のポインタ) 4 : char *d = "abcd"; // 配列のポインタ 5 : char **ea = a; // NG 6 : char **eb = b; // OK 7 : char **ec = &c; // NG 8 : char **ed = &d; // OK また気になって上記のような実験をしてみたのですが、 予想に反して結果がぜんぜん一致しません・・・。 5、6行目に関して: char **x; という形だけを見れば 配列のポインタでもポインタの配列でもいけそうな気がしますが、 この場合は特別にポインタの配列と決められているということなのでしょうか? 7、8行目に関して:どっちも同じだと思うのですが、何か違うのでしょうか? 何度も申し訳ありませんが、ご教示よろしくおねがいします。 結局、教えていただいたページをちゃんと理解できていないかもしれませんが・・・
- 130 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 20:47:21 ]
- 型が違う
- 131 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 22:47:53 ]
- >>129
5行目 配列へのポインタなんだから、 ポインタのポインタとは違うでしょ? a --> [ char型 ] ea --> [ char*型 ] --> [ char型 ] [ char型 ] [ char型 ] [ char型 ] [ char型 ] 7行目 &c は c 、あるいは &c[0] と同じ意味を持つから
- 132 名前:デフォルトの名無しさん [2009/12/31(木) 08:31:19 ]
- void kakuhoMemory();
int main(void){ int row = 0; char **url; url = (char **)calloc(1,sizeof(char *))) == NULL); url[0] = (char *)calloc(1000,sizeof(char))) == NULL); for(row = 2;row < 10;row++){ kakuhoMemory(url,row); printf("%p---%p\n",url,url[row - 1]); }} void kakuhoMemory(char **url,int row){ char **tmp; if((tmp = (char **)realloc(url,sizeof(char *) * row)) == NULL){ exit(1);} url = tmp; if((url[row - 1] = (char *)calloc(1000,sizeof(char))) == NULL){ exit(1);} }
- 133 名前:デフォルトの名無しさん [2009/12/31(木) 08:39:07 ]
- 続き:
1つずつポインタの配列を増やしていき、 新しく追加された変数にcharの配列のアドレスを代入したいのですが コンパイルして実行するとなぜか3回目でアドレスが短くなってしまい、 更にそれ以降はnilと表示されてしまいます。 以下に示します。 0x9da3008---0x9da3408 0x9da3008---0x9da37f8 0x9da3008---0x3f0 0x9da3008---(nil) 0x9da3008---(nil) 0x9da3008---(nil) 0x9da3008---(nil) 0x9da3008---(nil) どこか間違っているのでしょうか。よろしくお願いします。
- 134 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 09:17:57 ]
- >>133
ぱっと見変なとこ。 if((tmp = (char **)realloc(url,sizeof(char *) * row)) == NULL){ //呼び出し元ですでに確保してるはずだね。 url = tmp; // 引数のurlを上書きしてる。 if((url[row - 1] = (char *)calloc(1000,sizeof(char))) == NULL){ //上書きしたurlに保存しても呼び出し元には返せないね。
- 135 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 11:10:27 ]
- classの中で定義するtypedefってなにか呼び方があったような気がするんですが、何か知りませんか?
誘導型?とかそんな感じの
- 136 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 11:30:55 ]
- >>132
関数を void kakuhoMemory(char ***url, int row) { char **temp; if((temp = (char**)realloc(*url, sizeof(char*) * row))==NULL) exit(1); *url = temp; if((url[row-1] = (char*)calloc(1000, sizeof(char)))==NULL) exit(1); } にして、呼び出しを kakuhoMemory(&url, row); にする。
- 137 名前:107 [2009/12/31(木) 14:03:57 ]
- >>130 >>131
お返事が遅れてしまいましたが、回答ありがとうございました。 なるほど a も &c も配列のポインタのポインタをとっても 結局は配列の一次(?)のポインタとして扱われるということなんですね。 1 : char (*a)[5]; 2 : char c[5] = "abcd"; 3 : a = c; // NG(以下、この行は無視してコンパイル成功したものとする) 4 : a = &c; // OK 5 : printf("a : %d , *a : %d , c : %d , &c : %d\n", a, *a, c, &c); // 全部一致する 6 : printf("a[1] : %c , (*a)[1] : %c , c[1] : %c\n", a[1], (*a)[1], c[1]); // a[1] はうまくいかない くどいですが、実験してみたら上記のようになりました。 "[]"を単にアドレスから値を取得する演算子だと理解していたのですが、 かなり甘かったようです・・・。
- 138 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 15:19:22 ]
- 5:ポインタの書式指定子は%dじゃなくて%pだ
6:a[1]はアクセス違反。他と同じ場所を指すのはa[0][1]
- 139 名前:131 mailto:sage [2009/12/31(木) 15:22:30 ]
- >>137
ちょっと >>131 の最後の一文について訂正。 char c[5]; において、c と &c[0] は等価なんだけど ANSI-C以降の場合、&c は配列へのポインタなので、c と &c は同じじゃない。 K&Rだと同じなんだけどね 多分、配列とポインタを混同してると思うので、C-FAQを読むといいよ www.kouno.jp/home/c_faq/c6.html#0
- 140 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 17:16:48 ]
- モノステート シングルトン
使い分けがわからん ぐぐると >シングルトンパターンは汎用性、可搬性が必要なクラスに使用すべきでしょう。 >モノステイトパターンは元々「状態が不変」であることを表すパターンだと思うので、 「実体が一つであることを保証する」といった使い方には適さないでしょう。 具体的にどういう場面で使い分ければいいんだ?
- 141 名前:107 [2009/12/31(木) 19:15:54 ]
- ご回答ありがとうございます。
なるほど・・・今度こそ理解できたような気がします(自信なし)。 char (*a)[5]; char c[5] = "abcd"; a = &c; とした場合、printfとかで内容だけ見ると a == *a == c == &c となるけど、 実際は a と &c は配列へのポインタであり そして *a と c は配列の最初の要素へのポインタということで、型が違うことですかね。 & や * という演算子は値→アドレス、アドレス→値の変換をする演算子だと 思っていましたが、この場合は例外的に型の変換が行われるわけですね。 C/C++ 難しすぎです!
- 142 名前:デフォルトの名無しさん [2009/12/31(木) 19:19:27 ]
- >>134さん
>>136さん お二方のおかげでわかりました。 url=tmpじゃ確かに呼び出し元のurlの値は変わらないですよね。 それと>>136さんの if((url[row-1] = (char*)calloc(1000, sizeof(char)))==NULL) exit(1); の行のurl[row-1]の部分は(*url)[row-1]ですよね?
- 143 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 19:43:56 ]
- そうだね
- 144 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 23:18:27 ]
- >>141
> C/C++ 難しすぎです! うん、これら2つ、特にC++は難しいことで有名。 どのくらいの趣味グラマになりたい? 正直 将来の職業にする気が全く無く、 楽しみたいだけならPythonとかRubyとかのような もっと高級言語が良いんじゃないかと思うんだけど。
- 145 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 00:19:47 ]
- それは高級なのか?
- 146 名前:144 mailto:sage [2010/01/02(土) 11:05:10 ]
- >>145
俺は C言語は低級言語、PythonとRubyは高級言語といって 恥じない代物だと思っているんだけど、 君はどう思う?
- 147 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 11:22:09 ]
- むしろ君の方が恥ずべき代物
- 148 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 16:57:22 ]
- Cが高級言語のなかでは、低級よりだってのは、誰しも認めるところだと思ってたけど。
- 149 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 17:01:13 ]
- >>147
意味不明な煽りは止めてくれない? asm と c しか無かった時代とはもう違うのだよ。
- 150 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 17:32:56 ]
- そんな時代、いつあったんだろう…
- 151 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 17:56:59 ]
- >>150
「しか」は言い過ぎたけど、 まあ察してくれよ
- 152 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 19:39:50 ]
- >>144
PythonやRubyを高級言語と分類することには特に異論はないが、 プログラミングを職業とするということへの誤解を生む表現だな。
- 153 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 20:03:54 ]
- こいつをご覧くだせー。
#include <stdio.h> #define VIEW() printf("a = %d\n", a) int a = 0; void func(void); int main(int argc, char *argv[]){ int a = 10; VIEW(); { int a = 20; VIEW(); } VIEW(); func(); ::a = 30; /* (1) */ func(); return 0; } void func(void){ VIEW(); return; } まあ、見ていただければわかると思うが、変数名についての実験を行った。 グローバル変数と同じ名前のローカル変数を使うと、そのグローバル変数を参照するには :: を使えばよい。 ところで、この :: (グローバル名前空間) って純粋 C でも使える?
- 154 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 20:22:30 ]
- >>153
C言語にはnamespaceすらない んだったきがするが。
- 155 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 20:33:43 ]
- >>153 グローバル変数を使わなければよい。
- 156 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 20:46:56 ]
- >>154
そうか... Thanks! >>155 ぐろ〜ばる☆
- 157 名前:107 [2010/01/03(日) 00:50:30 ]
- >>144
まあ職業はともかく、実際C/C++で書かれているプログラムは多いですし 是非しっかり使えるようになりたいですね。 回答していただいた皆さん、ありがとうございました。
- 158 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 02:43:09 ]
- CRITICAL_SECTIONはグローバル変数じゃないといけないの?
ネット上のサンプルのほとんどがグローバル。 スレッド生成のときに渡すのは駄目なの?
- 159 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 09:31:46 ]
- >>158
Win32APIのCRITICAL_SECTION構造体かな? グローバルにおく必要は無いよ。普通はメンバー変数に置く。 スレッド間の同期に使うものだからスレッド作成前に作ってかまわない。 CRITICAL_SECTION構造体はコピーできないからポインタ渡しで渡すこと。 ただ、質問のようにスレッド生成時に渡すものではなく、スレッド間で競合するリソースをアクセスするときに、そのリソースが持ってるCRITICAL_SECTIONの構造体を参照してクリティカルセクションに入るようにする。
- 160 名前:デフォルトの名無しさん [2010/01/03(日) 20:41:46 ]
- 初心者質問ですいません
bool false の読み方が良くわからないので正しい読み方を教えて欲しいです
- 161 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 21:04:33 ]
- >>160
public.research.att.com/~ttsweb/tts/demo.php このサイトで聞きなさい。
- 162 名前:デフォルトの名無しさん [2010/01/03(日) 22:16:14 ]
- >>161
まったくわかりませんでした
- 163 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 22:17:32 ]
- 流暢な英語すげぇ
- 164 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 22:20:09 ]
- bool ブール
false フォールス
- 165 名前:デフォルトの名無しさん [2010/01/03(日) 22:36:43 ]
- >>164
ありがとうございます フォルスって読んでました
- 166 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 22:37:57 ]
- >>161
長年のchar論争に決着が…!
- 167 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 23:03:37 ]
- >>166
まさかcharを こう発音されるとは思ってなかったわw
- 168 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 23:07:57 ]
- >>165
フォルス=陰茎
- 169 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 23:19:00 ]
- char論争なんて無い
当然チャーだ
- 170 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 23:27:20 ]
- >>168
それは間違い
- 171 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 23:28:25 ]
- > Phallus
> ギリシャ語で「ふくらんだもの」のこと。 > 男性の性器、男根を意味する言葉。特に勃起した状態を指す > なお発生学においては、男性の陰茎だけでなく女性の陰核も指す。
- 172 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 23:33:29 ]
- phallusはファルス
- 173 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 23:43:07 ]
- >>169
は?シャアに決まってるだろJK
- 174 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 23:45:39 ]
- うけると思った?
- 175 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 00:23:59 ]
- チャじゃねーの
|

|