トップページ⇒tech
1001コメント336KB

【初心者歓迎】C/C++室 Ver.28【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/06/09(金) 10:08:51
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【前スレ】
【初心者歓迎】C/C++室 Ver.27【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1147183708/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0577デフォルトの名無しさん 2006/06/23(金) 15:59:12
//N=50で落ちるのはバグの性だったようです。これならN=100でも落ちない。
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 15
void get_randam(int block[N][N]){ int *p;for(p = &block[0][0]; p <= &block[N-1][N-1]; p++)*p = rand() % 2; }
void paint(int block[N][N], int x, int y){ if( x<0 || y<0 || x>=N || y>=N || block[y][x] != 0)return;
block[y][x] = 2; paint(block, x+1, y);paint(block, x-1, y);paint(block, x, y+1);paint(block, x, y-1); }
void make_ans(int block[N][N]){ int i; for(i = 0; i < N; i++){ paint(block, 0,i);paint(block, N-1,i);paint(block, i,0);paint(block, i,N-1);
} } int main(){int block[N][N], *p, i = 1;srand(time(NULL));get_randam(block);make_ans(block);for(p = &block[0][0]; p <= &block[N-1][N-1]; p++, i++){
switch(*p){case 0: printf(" 1"); break; case 1: printf(" *"); break; case 2: printf(" -"); break; default:printf(" E"); break;
}if(i % N == 0) putchar('\n'); } return 0;}
上のソースは、宿題レスでだいぶ前に俺が適当に問題提示してみた問題の答え(どなたかが答えたソースです)
-**-**
-*-*-*
*-****
**----
の*で囲まれてる所をすべて別の文字に埋めるっていう問題
で、問題出しただけで答えは自分自身わからなかったのですが
この答えのソース見てもどうやって、再帰つかって探索してるのかが
いったいどうやったらこういうのを思いつけるのかがわからないです。
センスもあるんでしょうが、パズルの解法とかの関連ページ見ても
わからずで。
どういう風に、再帰さして結果を出してるのか。
ヒントか、参考になるページとかあれば、どなたか教えてください。
05785762006/06/23(金) 16:00:48
例えば>>563のコードでは、
・printを多態する(俺造語)関数であると設計するなら、初めからvirtualを付けとけ
・printを多態しない関数であると設計するなら、継承したクラスではその関数名は使うな
 (似たような処理をする関数を作りたければ、別の名前にしろ)

また別の側面から考えると、あるクラスライブラリを使うということを考えたときに、
「隠蔽された関数がいたるところに散らばっている」というライブラリの場合、
使いたいクラスの規定クラスまでさかのぼって、多態という文脈でその関数を
使ってよいかどうか調べなければならなくなるかもしれないというようなことも
起こりえる。
05795762006/06/23(金) 16:13:48
付け加えておくけど、以上はC++に限った話で、他言語だと全く違うこともあるからね。
0580デフォルトの名無しさん2006/06/23(金) 16:43:07
>>578
まぁ昔はそうだったわけだけど、WTLなんかにあるようなテンプレートベースの
クラスライブラリだと virtual なしで関数シグネチャ一致でポリモするってのは
便利に使われてるわけで・・・

たとえば(単純すぎて有効性が示せてない例かもしれないけど)
template class<T> void Log(const T& o) { o.print(); }
なんてのを使いたいとき。

Java とか C# なら >>579 には賛成します。
05815762006/06/23(金) 16:52:46
>>580
俺はただ「1%も同意しない」にひっかかってるだけなんだけど、その「便利な場合」以外においても
C++では>>576,>>578には全く同意できないということですか?
うーん、まぁそういう考えの人もいるってことはわかりました。(あなたにとっては俺のような奴が
いるってことがわかったんでしょうが)
05825762006/06/23(金) 17:01:30
ちなみにRubyでは、振る舞いを変える場合は単にメソッドを定義するだけであって、
呼び出される文脈でどれが呼ばれるかが変わるいうことはありません。
こっちの方が自然だと思う。
0583デフォルトの名無しさん2006/06/23(金) 17:12:56
>>565
今のところ、標準規格においてstd::basic_stringは要素がメモリ上で連続している保障がないから、
APIにバッファとして渡せないという影響も大きいと思う。(読み取りだけなら勿論c_strがあるけどね)
その点CStringはGetBufferなど、如何にもAPIにバッファとして渡すことを考慮されている分便利。

ちなみにCString以外でWindows APIにバッファとして渡すのに使えるものとしては、
std::vector<TCHAR>とか(std::vectorは要素がメモリ上連続している保障がある)、
new[]してboost::scoped_array, shared_arrayとかがある。
0584デフォルトの名無しさん2006/06/23(金) 17:38:17
>>581
主義の違いでよいような気もするけれども、質問風の文章なので一応返事してみます。

CBase::print() // オブジェクトの内部状態を表示
CDerived::print() // オブジェクトの内部状態を表示
なんていう2つの関数は同じ名前でよいと(強く)思うわけです。

CBase::basePrint() // オブジェクトの内部状態を表示
CDerived::derivedPrint() // オブジェクトの内部状態を表示
とするのは馬鹿げてると(これまた強く)思うから。

でまぁ、virtual の有無で動作が変わるからポインタベースでのポリモに使えるか
どうかわからんってのは・・・ドキュメント化するしかないでしょうね。
関数名を変えておけば使えないことは明らかなのでウマー!ってのは・・・アリなのかなぁ。
デストラクタとかは関数名変えようがないわけだし・・・
05855762006/06/23(金) 17:52:59
>>584
うーん、主義の違いとしか言えないということかな。

>なんていう2つの関数は同じ名前でよいと(強く)思うわけです。
全く同意。ただ俺の場合はCBase::print()をvirtualにします。

俺の主義では、CBaseもCDerivedもprintに反応するなら、CFoo : CBaseも、
CBar : CDerivedもprintに反応するのが自然だと本能的に思うわけです。
どうせ全部でprintに反応すると思っているのなら、CBase::print()をvirtualに
しとけって思うんですね。

つまり、親クラスがprintに反応するのに子クラスが反応しないのはOOに
反していると感じるわけです。

やっぱり、主義の違いってことかな・・・。
0586デフォルトの名無しさん2006/06/23(金) 18:38:20
>>584
馬鹿じゃないの?
0587デフォルトの名無しさん2006/06/23(金) 20:01:58
>>573
馬鹿じゃないの?どう考えても、メンバ関数の隠蔽は、最悪ケースバイケースでそれはオッケーてな感じだろ。
いちいちそんなことされた日にやコンテナ入れるのも迷うわい。可読性とユーザビリティが著しく阻害される。
つか、純粋仮想関数使え。あ、こりゃ仮想だからNGなのかw
0588デフォルトの名無しさん2006/06/23(金) 20:02:19
>>586
能無しが無理して割り込まなくていいですよ。
0589デフォルトの名無しさん2006/06/23(金) 20:32:52
>>584=>588
ギャハハハハ
0590デフォルトの名無しさん2006/06/23(金) 21:19:23
>>585
>どうせ全部でprintに反応すると思っているのなら、CBase::print()をvirtualに
>しとけって思うんですね。

virtual にしなくても反応はするでしょう。ふつうに継承して。
virtual の有無での差はポインタ経由で呼び出すときの違いだけ。

>>587
なにか具体的な例あげて批判してくれるとわかりやすいんだけど。
っていうかみんななんでそんなに仮想関数好きなの?
漏れは純粋仮想関数以外はあんまり使わないけどなぁ。
0591デフォルトの名無しさん2006/06/23(金) 22:06:00
>>590
つまりC++の継承とポリモーフィズムの仕組みを真っ向から否定する、ということだね
0592デフォルトの名無しさん2006/06/23(金) 22:14:43
ポインタ経由でとか言っちゃう時点でお国が知れるってもんだ。
05935762006/06/23(金) 22:32:28
>>590
うーん、なんだかもっと話がかみ合わなくなってきた気がするので、これを
最後にします。

>virtual にしなくても反応はするでしょう。ふつうに継承して。
え?そういう話だったんですか?
もともとあるクラスツリーに属するクラスでは全てprintに反応するのだが、
それぞれで実装が違うけど、virtualはお勧めしないって話では?
なぜvirtualを付けることに1%も同意できないのか良く分からなくなって
きました。

とはいうものの、実はC++の場合、俺も将来を見越してvirtualを付けておく
というのは(オーバーライドされることを考えておくというのは)、ほんの少し
違和感があります。前述のRubyの例が自然だと考えてるわけで・・・。

ただひとつ言えることは、言語仕様的にvirtualを付ける/付けないでこの
ように振る舞いがかわるからこうしろ、ということではなく、多態性を使う
のであれば仮想関数にしておくのがC++の流儀である、という認識は
多分どのように説得されても変わることはないと思います。
ではでは。
05945762006/06/23(金) 22:35:19
s/それぞれで実装が違うけど/それぞれで実装が異なることがわかっていても/
0595デフォルトの名無しさん2006/06/23(金) 22:40:21
またこのスレ伸びてると思ったらこんなんかよ
前のよりマシだけど
0596デフォルトの名無しさん2006/06/23(金) 23:09:30
馬鹿ほど饒舌なんだよ。
利口な人間は己に欠落を見つけ次第黙々と勉強する。だから利口になる。
馬鹿はそこで間違った自分の正しさを延々と説いて回る。だから馬鹿。
0597デフォルトの名無しさん2006/06/23(金) 23:10:55
>>577
・どこまで理解できていて、何が理解できていないのか明確にせよ。
・デバッガを使ってどのような動作するのか調査する。
・printfなどを使って途中経過がわかるようにする。
、、and so on
0598デフォルトの名無しさん2006/06/23(金) 23:12:55
>>595-596
そんなことしか言えないお前らはもっと馬鹿だけどなpgr
0599デフォルトの名無しさん2006/06/24(土) 00:03:38
ほら来た。逆ギレも馬鹿の特徴のひとつ。
0600デフォルトの名無しさん2006/06/24(土) 00:04:28
俺の予想:こいつは2.0の奴だ
0601デフォルトの名無しさん2006/06/24(土) 00:31:47
逆ギレの使い方間違ってますよw
0602デフォルトの名無しさん2006/06/24(土) 00:35:48
俺の予想:JUnitスレで暴れてた奴
0603デフォルトの名無しさん2006/06/24(土) 00:37:50
俺の予想:宿題スレで暴れてる奴
0604デフォルトの名無しさん2006/06/24(土) 02:14:57
何かインクリメントするとき、例えば
data[number] = a;
number++;
と書くのと、
data[number++] = a;
と書くのでは、では客観的にどっちのほうが良いでしょうか?
0605デフォルトの名無しさん2006/06/24(土) 02:24:01
後者
0606デフォルトの名無しさん2006/06/24(土) 02:33:09
>>605
客観的に理由を述べられるか?
0607デフォルトの名無しさん2006/06/24(土) 02:37:00
後者の方がスッキリしててわかりやすさも失われていないから
0608デフォルトの名無しさん2006/06/24(土) 02:37:17
インクリメントするためだから前者に決まっとる。

後者はnumberのインクリメントのためにdata[]のインデックスとして使いaを代入する冗長なコード。
0609デフォルトの名無しさん2006/06/24(土) 02:40:45
(何でここはすぐ論争が始じまるのだろう…)
(プログラミング手法の好みって宗教と似てる所があるな)
0610デフォルトの名無しさん2006/06/24(土) 02:42:38
インクリメントするとき≠インクリメントするため
馬鹿ですか?
0611デフォルトの名無しさん2006/06/24(土) 02:47:28
まあ、そう荒れるなよ。ネタをネタと(ry
0612デフォルトの名無しさん2006/06/24(土) 03:01:32
見間違えることくらいよくあることだろ
0613デフォルトの名無しさん2006/06/24(土) 03:03:09
ネタリスト
1.インクリメントだけする時、++i; と i++; のどっちがいい?
2.無限ループは、while(true) while(1) for(;;) ?
3.エラー処理へのgoto はOK?
4.関数の入口でチェックしてreturn はOK?
5.ステータスを返す時は、必ず戻り値で返した方が良い ?
6.正常値は 0 にすべき?

…まだまだありそうw
0614デフォルトの名無しさん2006/06/24(土) 03:13:00
1.現代では関係ない。大昔のコンパイラではベンチが変わった。
2.現代では関係ない。
3.gotoでなくthrowが正しい
4.ぜんぜんOK、それを排除するとthrowも書けない
6.Cのライブラリにそういう関数が多いから合わせたほうが良いでしょう。
0615デフォルトの名無しさん2006/06/24(土) 03:18:48
無駄なメモリの消費やら、計算時間がやたらと掛かる効率の悪いアルゴリズムでなく
どっちを書いても処理の流れが同じなら、パッと見て把握しやすい
見やすい方を選べば良い。そしてその見やすいの基準は自分で良いんじゃね?
誰かにいちいちケチつけられても始まらないし
そもそも市販の本をいくつか見たことある人なら
そんな細かいことを気にしないんでは?
人それぞれだし、思想の自由まである国で生きていることを実感した方が良いよ?
0616デフォルトの名無しさん2006/06/24(土) 03:25:04
>614
例外のないCの場合は?
0617デフォルトの名無しさん2006/06/24(土) 03:27:38
>そしてその見やすいの基準は自分で良いんじゃね?
まあ、ソースを自分しか見ないのであれば。
0618デフォルトの名無しさん2006/06/24(土) 03:30:32
>>615
誰が見ても下手なコードは存在する
0619デフォルトの名無しさん2006/06/24(土) 03:40:11
何かと人の意見にいちいちけちつけるよな、ここ。
自分の視野が狭く観点が甘いことに気づいた方が良いよ。
無理に相手を理解しない、自分を理解させない。
意見を押し付けない、気に入らない意見ならスルーすりゃ良い。
ただ、誰かが自分の気に入らないことを言っていると思う前に
言っていることが「事実」かどうかは自分で判別する能力を身に着けた方が良いよ。
所詮、他人の意見なんざそいつの価値観による判断でもあるんだろうし。
何も相手が自分が嫌いな食べ物を好き好んでいたって良いじゃん。
嫌うなら食べ物だけにして、食べる人まで嫌うこたぁ〜ないだろ?
0620デフォルトの名無しさん2006/06/24(土) 04:14:39
こいつ2.0野郎に確定した。
0621デフォルトの名無しさん2006/06/24(土) 04:33:33
++i; と i++; の問題は、少々根が深いですよ。
Cの黎明期に、実はCが環境依存というか
プロセッサ依存していた名残ですね。
06226132006/06/24(土) 04:35:00
>>620
全然ちがうと思うよ。
怒ってると言うよりあきれてる雰囲気だものw

俺もちょっとあきれてるww
0623デフォルトの名無しさん2006/06/24(土) 04:36:21
>>622
いったい何にあきれてるんだ?
このスレでは2.0問題以降、平和なもんだが。
0624デフォルトの名無しさん2006/06/24(土) 05:12:06
7.仮引数として配列を渡す場合、void func(int num[]); と void func(int *num); どっちがいい?
0625デフォルトの名無しさん2006/06/24(土) 05:58:15
何だかわからんが、必死な奴がいるな
0626デフォルトの名無しさん2006/06/24(土) 09:52:30
1. C++のイテレータでは基本的に前置使うから、どちらでもよいときにはiでもなんでも前置にする。
6. WindowsのGetLastError()/HRESULTなどのように複数の意味を持たせる場合には、
  逆に0を成功値にするというのもありだとは思う。
7. void func(int* num, size_t size);
  或いは
template<typename RandomAccesIter>
void func(RandomAccesIterIter first, RandomAccesIterIter last);
あとRange版もあればなおよしか。
0627デフォルトの名無しさん2006/06/24(土) 09:59:19
  ┏┳┳┓              ┏┳┳┓
┏┫┃┃┃ スレ違い雑談は┃┃┃┣┓
┃┃┃┃┣┓   ここまで.┏┫┃┃┃┃
┃      ┃┃┏━━━┓┃┃      ┃
┃スレ違い ┣┫ ・∀・ ┣┫  END ┃
┗━━━━┛┗┳━┳┛┗━━━━┛
            ┏┻┓┃
        ┏━┛  ┣┻┓
        ┗━━━┫  ┗━┓
                ┗━━━┛
0628デフォルトの名無しさん2006/06/24(土) 12:43:33
何だかわからんが、スレ違いではないんじゃないか?
0629デフォルトの名無しさん2006/06/24(土) 13:43:04
初心者向きではないわなw
0630デフォルトの名無しさん2006/06/24(土) 13:55:08
>>615=>>619
君、2ちゃんに向いてないと思うよ。
来なけりゃ腹も立たないし。
Yahooや@ITの掲示板がいいんじゃないかな。マナーいいらしいよ。
0631デフォルトの名無しさん2006/06/24(土) 14:29:14
char *a;
a="test";

このソースコードに悪い点はありますか?
0632デフォルトの名無しさん2006/06/24(土) 14:30:20
ない。
0633デフォルトの名無しさん2006/06/24(土) 14:30:37
あるよ
06346312006/06/24(土) 14:32:23
>>632-633
・・!?
詳しくお願いします。
0635デフォルトの名無しさん2006/06/24(土) 14:33:49
ほれ
char *a = "test";
0636デフォルトの名無しさん2006/06/24(土) 14:34:17
8.ローカル変数の定義はブロックの先頭に限る?
0637デフォルトの名無しさん2006/06/24(土) 14:34:23
>>634
ないよ。
まぁ固定文字列を代入するのなら
char *a = "test";
って書けという奴はいるかもしれんがな。(俺もこう書く)
0638デフォルトの名無しさん2006/06/24(土) 14:37:19
>>636
君なんでそんなに必死なの?
君が振る話題って、手垢が付きまくったもので面白みに欠けるんだけど。
相手してほしけりゃ、もっとましなネタ振って下さいね。
06396312006/06/24(土) 14:38:12
char *a;
a="test1";
(aを表示)
a="test2";
(bを表示)

ではこんな使い方も、あながち間違いではないということでしょうか?
06406312006/06/24(土) 14:38:45
ミス

char *a;
a="test1";
(aを表示)
a="test2";
(aを表示)
0641デフォルトの名無しさん2006/06/24(土) 14:47:49
>>639
全く問題ない。
(コードの最適化はできるだろうが)
0642デフォルトの名無しさん2006/06/24(土) 14:48:40
特に問題は無いが。
06436312006/06/24(土) 14:52:08
有難うございます。
0644613,6362006/06/24(土) 14:52:40
>>638
手垢が付きまくって面白みに欠けるリストを作ってるんだがw
余計だったかな? 失礼しやしたw
0645デフォルトの名無しさん2006/06/24(土) 14:56:23
>>644
別にいいんじゃないの?気にせず続けなよ。
0646デフォルトの名無しさん2006/06/24(土) 15:49:30
>>641
括弧の中を詳しく。

>>640
間違いではないが、括弧の中が関数呼び出しなら
a = "test1";
disp(a);
ではなく
disp("test2");
の方が見通しはよさそうだね。
0647笹井奈琴2006/06/24(土) 16:10:12
文字列定数をポイントするなら、
const char* a;
a = "test1";
のほうが好ましいと思う。
0648デフォルトの名無しさん2006/06/24(土) 16:12:02
面白くないよ。
0649デフォルトの名無しさん2006/06/24(土) 16:12:24
constってなんですか?
0650デフォルトの名無しさん2006/06/24(土) 16:17:14
調べるより先に質問する奴は進歩しない
0651デフォルトの名無しさん2006/06/24(土) 16:19:14
釣られまくりですな
0652デフォルトの名無しさん2006/06/24(土) 16:25:56
質問しに来たら、丁度文字列の質問があってどうしようかと悩む俺。
0653デフォルトの名無しさん2006/06/24(土) 16:54:27
謎1 Hoge() {
 char ch[10] = "hoge";
 return 謎2
}

int main() {
 char str[10] = "test";

 str = Hoge();
 printf("%s",str);
 return 0;
}

関数Hoge()で処理した ch の文字配列を
呼び出し元の str へ入れようとした時に
謎1・2はどんな風に書けばいいのでしょうか。
0654笹井奈琴2006/06/24(土) 16:57:32
>>653
void Hoge( char* forRet ) {
char ch[10] = "hoge";
strcpy( forRet, ch );
}

int main() {
char str[10] = "test";
Hoge( str );
printf("%s",str );
return 0;
}
0655笹井奈琴2006/06/24(土) 17:00:52
どうしても返り値でやりたいんなら
struct buf_wrap {
char buf[10];
}
struct buf_wrap Hoge() {
struct buf_wrap r;
strcpy( r.buf, "hoge" );
}

int main() {
struct buf_wrap l;
l = Hoge();
printf( "%s", l.buf );
}

スタックをたくさん消費するし、
そんなに簡潔な感じもしないのであんまりお薦めしない。
06566532006/06/24(土) 17:02:23
>>654
出来ました
ありがとです。
0657デフォルトの名無しさん2006/06/24(土) 17:10:57
>>647
についてわからないのですが、
宣言時に初期化せずにconstした場合、そのとき
aのメモリ位置に元から入っている未知のビットが
aの定数として固定されるのではなく、
後から代入が可能なのですか?

0658デフォルトの名無しさん2006/06/24(土) 17:22:08
>657
const char *a;
と
char * const b;
の違い。
0659@゚ν゚)ニホンゴムズカスィネー ◆FIgVQJjZb6 2006/06/24(土) 17:23:53
コンパイラで初心者でも使いやすいのを教えてください
0660デフォルトの名無しさん2006/06/24(土) 17:31:08
質問があります。ウィンドウプログラムでツールバーを作成しました。
しかし画面を最大化するとツールバーが消えてしまいます。
ウィンドウのサイズが変更になったときの処理
 WM_SIZE: SendMessage(hTool、TB_AUTOSIZE、0、0)
もして、ツールバーにメッセージをおくっているのですが直りません。
どうしたらいいですか?
0661デフォルトの名無しさん2006/06/24(土) 18:01:01
>>659
初心者にもいろいろあるし好みもあるから、一概にこれというのは決められない。
自分で試して使いやすいのを選べ。
0662デフォルトの名無しさん2006/06/24(土) 18:10:44
初心者の質問ですいません。

純粋仮想関数の存在意味がわかりません。
仮想関数でも十分な気がするんですが。

0663デフォルトの名無しさん2006/06/24(土) 18:12:23
>>662
・派生クラスにオーバーライドを強制できる
・純粋仮想関数があるクラスはインスタンス化できなくなる
0664デフォルトの名無しさん2006/06/24(土) 18:27:16
初心者質問です。
gccでコンパイルしたライブラリーはiccからリンクすることは
可能なのでしょうか?
よろしくお願いします。
0665デフォルトの名無しさん2006/06/24(土) 19:04:20
>>664
Windows版iccはリンカにMSのLink.exeを使うんじゃなかったかな。gccはどうだっけ?
Linux版はgccでコンパイルしたと思われるライブラリを使っているから大丈夫っぽい。
#但し、C++は無理。
0666デフォルトの名無しさん2006/06/24(土) 19:21:07
LSI使ってるんですが、「Division by 0」というエラーが出ます
これはどういう意味なんでしょうか
0667デフォルトの名無しさん2006/06/24(土) 19:21:20
>>662
インターフェースのみのクラスを定義できる。
派生クラスにインターフェースを確実に継承させられる
(インターフェースの保証ができる)



0668デフォルトの名無しさん2006/06/24(土) 19:28:06
確実に実装させられる。だな。
0669デフォルトの名無しさん2006/06/24(土) 19:33:15
>>668
スマン 訂正サンクス。
0670デフォルトの名無しさん2006/06/24(土) 19:34:45
>>666
ゼロで除算が行われた。
0671デフォルトの名無しさん2006/06/24(土) 19:35:33
>>670
ありがとうございます
0672デフォルトの名無しさん2006/06/24(土) 19:38:15
>671
というかそのまま書いてあるんだから読めよ
0673デフォルトの名無しさん2006/06/24(土) 20:19:56
だから今時LSI-Cなんか使うなよ。
0674デフォルトの名無しさん2006/06/24(土) 21:46:27
#include<iostream.h>

int count=0;

int main(void){
while(1){
cout<<count;
    }
}

これをコンパイルしようとすると
「E2015'count'とSTL::count(略)の区別が曖昧」ってエラーでて、
countを別の変数に変えると通るのはどうして?
0675デフォルトの名無しさん2006/06/24(土) 21:56:25
>>674
obsoleteなC++コンパイラは窓から投げ捨てろ。
0676デフォルトの名無しさん2006/06/24(土) 22:01:57
>>675
よくわかんないけどBCC6ってポンコツなのか
■ このスレッドは過去ログ倉庫に格納されています