- 1 名前:デフォルトの名無しさん [2007/06/03(日) 22:33:55 ]
- エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です。 【前スレ】 【初心者歓迎】C/C++室 Ver.37【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1178432985/l50 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 24 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 13:29:38 ]
- >>22
パフォーマンスを気にするようなレベルじゃないならAoSでいいんでね? どうせ100台分だってことだし。
- 25 名前:20 [2007/06/04(月) 13:45:11 ]
- 回答ありがとうございました、助かりました。
また質問で悪いんですけども、下のように2種類のファイルを呼んだんですけども 二個目のexample2の部分でエラーがでてしまいます。 何が悪いんでしょうか? #include<fstream> int main(){ ifstream fin("sample1.txt"); /* 入力ファイルストリーム 宣言 */ fin >> x; fin >> y; /* 読み込み */ cout << x << ' ' << y << endl; /* 表示 */ fin.close(); /* 読み込み終了 */ ifstream fin("sample2.txt"); /* 入力ファイルストリーム 宣言 */ fin >> a; fin >> b; /* 読み込み */ cout << x << ' ' << y << endl; /* 表示 */ fin.close(); /* 読み込み終了 */ return 0; }
- 26 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 13:48:34 ]
- コンパイルエラー出まクリスティ
- 27 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 13:53:26 ]
- 同一のスコープ内で 同じシンボル名の変数(fin な)を2回宣言してる
- 28 名前:20 [2007/06/04(月) 13:54:52 ]
- 二種類のファイルを呼ぶには、どうしたらいいのでしょうか・・・
- 29 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 13:57:17 ]
- 違う名前にするかopen使うかすればいいんじゃねーの
入門書読めばわかる
- 30 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 14:27:31 ]
- クラスでnew,delete演算子をオーバーロードしたいんですが、
staticじゃないといけないんでしょうか? エラーが出て困ってます。
- 31 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 14:30:56 ]
- そうですか。
- 32 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 14:55:06 ]
- そうですね。
- 33 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 15:17:32 ]
- そうですく。
そうですれ。
- 34 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 15:28:45 ]
- >>31-33金くれ
- 35 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:32:08 ]
- >>30
staticを付けなくてもstatic扱いされる。だって実体がまだ/もう存在していないから。 これに限らず静的メンバは、ただそのクラスに関連があるからクラス宣言の中に入っているだけと思えばいい。
- 36 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:51:23 ]
- >>9
遅レスなんだが、みんな{0}初期化なの? 個人的にCでtypedef enumを使うんだが、こいつが一番始めにいると 型違いエラー(警告だっけ?)になるからずっとmemsetを使うようになったんだが。 わざわざ、メンバの順番意識するなんてバカらしいし・・・
- 37 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:55:30 ]
- 浮動小数点数の0とヌルポインタのビットパターンが
単に0を並べただけと規定されているわけではないから もちろん自分の環境でそうなっているのなら、 移植性無視してやるという選択肢はある
- 38 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:56:43 ]
- そういう構造体にはコンストラクタを作ってしまうので無問題。
- 39 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:03:05 ]
- >>37
>>38 いや、C++だったらコンストラクタでポチポチ初期化するよ。 浮動小数点は使わない(使えない)環境なんで問題ないんだが、 NULLポインタはどうしようもないな。今の環境は0だから問題ないんだけど。
- 40 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:32:09 ]
- コンストラクタでよいのなら、
そのような構造体用の初期化関数をつくってポチポチ初期化してみては。 あるいは、初期化専用のglobal変数を確保しておいて、それを代入することで 初期化するとか。 後者はmutexを初期化するときにPTHREAD_MUTEX_INITIALIZERを使う のと同様の使い勝手になると思いますので、そういう感じの 名前をつけておけば紛らわしさも無いかと。
- 41 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:46:07 ]
- >あるいは、初期化専用のglobal変数を確保しておいて、それを代入することで
初期化するとか。 一時期はそういう風に初期化してた。 const XXX_STR INIT_TABLE = {0}; // global ソース内 XXX_STR strValue; strValue = INIT_TABLE で、構造体のメンバの頭にtypedef enumが来たときにVCでコンパイルエラー。 確かにそうだよな・・・って思って、全部memsetにしたんだ。 組込みなもんで、C→C++になんて早々変わらないんだ。 しばらくはこのままmemsetでやっていこうと思う。
- 42 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:49:20 ]
- >>41
global変数なら = { 0 } とかは、べつにいらないのではないでしょうか。
- 43 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:50:02 ]
- つうかenumは明示的に指定して初期化すべきだろ
memsetて
- 44 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:59:21 ]
- >>42
global変数ってのは間違ってたかな? 初期化用のconstデータを作るって感じで >>43 構造体内のメンバに変更があったときに、面倒なのと チーム内で変数の0=異常値として扱ってるのでまぁいいかなと・・・ いや、わかってるんだけどね・・・昔からの流れは中々変えさせてもらえなくて
- 45 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 02:08:21 ]
- >>44
global変数の場合ですと、ゼロで初期化したいだけなら、規格に 準拠している処理系なら自動的にそうなるので、= { 0 } は不要です。 enumのようなものを含む型に初期値を正しく与えたい場合には、例えば = { none, 0, ... } とでも書けばよいではありませんか。 global変数による初期化を利用するのなら、こう書くのは一箇所だけ、 型の定義を変えても変更はそこだけで済みます。
- 46 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 02:29:01 ]
- >>45
いや、組込みなんで、処理系なんてもんがいてくれればそれでいいんだけど RAM配置からコールドスタート処理、レジスタ設定からその他初期化処理まで やるのは自分なわけで・・・って関係ないか。 ま、そんなわけで、自動的に初期化なんてしてはくれないわけですよ。 >enumのようなものを含む型に・・・ {0}によって、後ろの省略されたメンバを0で初期化するって話とずれてません? 全部、初期化子書くなら初期化用の関数でも同じですよね? って、そろそろすれ違いなんでやめますか。 板汚し、失礼しました。
- 47 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 02:42:48 ]
- >46
組み込みのイニシャルルーチンは無いの? そこでRAMの初期化をするはずなんだが
- 48 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 02:48:22 ]
- >>47
領域クリアしてるよ いくつかの領域にわけて、初期化内容に応じてどこまで初期化するか決定してる。 で、そこで初期化されると困るけどメインルーチンに戻ってきたときには 初期化しておいてほしいやつとかを、ぽちぽち初期化してる。 いや、そんな変数ばっかの環境が悪いとかは言わないで・・・
- 49 名前:デフォルトの名無しさん [2007/06/05(火) 03:04:00 ]
- >48
なんでRAM全領域を初期化しないの?
- 50 名前:49 mailto:sage [2007/06/05(火) 03:06:39 ]
- ここ初心者対象スレだったね。
組み込みの話題は別にします。
- 51 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:19:39 ]
- π計算はそのパソコンの性能がわかるって聞いたんだけど質問させて。
Q1,πって高校数学でも式作れるよね? それをプログラムにすればいいんじゃない?とか思ったんだけど・・ でもサイト調べたら難しい公式とか使ってるけどどうして? Q2,円周率のプログラムってなんで桁に限界あるの?一応無限までだせそうだけど パソコンつけっぱなしでどんどんでてくるんじゃないのかなっておもったんだけど どこどこの大学が何桁まで出した!とかあってあれ?って思った Q3,高校数学レベルでいいから簡単なπ求めるプログラムを教えて。 使用してるのはC言語のWINDOWS 学校で聞いてきになったんだけど、言葉足らずだったらごめん
- 52 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:21:23 ]
- >>51
www1.coralnet.or.jp/kusuto/PI/
- 53 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:25:23 ]
- >>51
ちょっと行ってみる。ありがとう。
- 54 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:25:41 ]
- クロスコンパイラが.bssを分けてくれない?
.bssは分けてくれるけどそれをゼロクリアするスタートアップコードはついて 無いし、自分でも書いてない?(セグメント別れてるんなら書くの簡単だと思うけど) 組込みって奥が深くてわかんないや
- 55 名前:51 mailto:sage [2007/06/05(火) 03:35:07 ]
- >>52
だった・・ 今見てきたけど、このくらいの質問は論外なんだなって思った。 学校で聞いてもそれは今関係ない、いつかやるからって言われるし・・ まぁいつかわかるとおもうけど
- 56 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:36:41 ]
- >>55
「マチンの公式 多倍長演算」でぐぐってみろ。
- 57 名前:51 mailto:sage [2007/06/05(火) 03:45:42 ]
- >>56
夜中に申し訳ない!
- 58 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:50:05 ]
- >>41
Cなら enum を 0 で初期化してもエラーにはならないはず。 C++ ならエラーになるけど、その場合はコンストラクタが使えるし、 = {} も使える。 C/C++ のどっちかが決まってるなら問題にならないはず。 CのソースをC++でもコンパイルできるようにしたいときだけ、 面倒な話になる。
- 59 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:09:56 ]
- >54
おそらく初期化ルーチンはライブラリ化されていると思うよ。 どこのマイコンコアだかわからんが、メーカー純正のコンパイラ? 組み込みのCの場合でもスタック以外のRAM領域はクリア(つまり0)されているのが基本
- 60 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:30:00 ]
- 連結リストを利用したプログラムを作ったんですがうまくいきません
ソース kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4155.txt コンパイラ BCC5.5 デバッガを走らせて見たところ、39行目のscanf("%d",&ch);の実行後にstartPtrの値がNULLになったことが原因みたいなんですが、 なぜここでstartPtrの値が変わるかわかりません BCC5.5のバグかなんかでしょうか?
- 61 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:38:02 ]
- >>60
バグってるのはすぐ処理系のせいにする君の頭だ char型の変数に%dを突っ込むな %dはint型のポインタを要求する
- 62 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:43:00 ]
- まぁ初心者のうちはありがちなことだな>処理系のバグを疑う
- 63 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:44:09 ]
- ほんとだorz
ありがとうございます なんか、こういうミスで詰まること多いんですよね
- 64 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:53:05 ]
- >>60
startPtr + 9 は一体どこをポイントしているとお思いか? 自分の無理解無努力無責任のつけをコンパイラに転嫁させませぬよう。
- 65 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:54:23 ]
- これって、char型の変数とか言ってる>61も大間違いなのに、それで勝手に納得している>63ってなんなの?
- 66 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 07:46:12 ]
- >>64-65
startPtr + 9で問題ないだろ
- 67 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:23:53 ]
- ってか、Cのソースなのに、for文の中で変数宣言しちゃうのはどうかと。
- 68 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:30:08 ]
- C99だと思えば、ってBCCはC99非対応だけどね
- 69 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:23:44 ]
- >>65
??? chはchar型でそのポインタにintサイズ書き込んだら近くのメモリ壊すのは当たり前だと思うが まぁ言葉足らずとかのレベルで間違いとも言い切れないな あとどうでもいいことだが (startPtr+9)-> って書くよりは startPtr[9]. のほうがスマートでわかりやすい気がする さらに言わせてもらえば startPtrは他の変数にコピーしといて for(int c=0;c<10;c++;startPtr++){ printf("%d個目の文字を入力してください:",c+1); scanf("%d",&(startPtr->data)); startPtr->nextPtr=startPtr+1; // ++startPtrにして上のstartPtr++無くしてもいいんだが } startPtr->nextPtr=NULL; でとっといた startPtr のコピーを戻してやればスマートじゃないかと
- 70 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:27:54 ]
- >>69
for(int c=0;c<10;c++;startPtr++){ これは for(int c=0;c<10;c++,startPtr++){ の間違い
- 71 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:36:12 ]
- >>69
for(int c=0;c<10;c++,startPtr++){ これは for(int c=0;c<10;c++;startPtr++){ の間違い探し
- 72 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:40:54 ]
- てんで話にならない。
- 73 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:43:07 ]
- >>72
誰がうまいことを言えと(ry
- 74 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 13:43:49 ]
- いやー、わからんかったw
画面上でも1ドットだぜ・・・
- 75 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:57:56 ]
- 大学2年です。現在、C言語の勉強をしています。
制御構造やポインタなど基本的なことは理解できました。 これから何をしていけばいいでしょうか?将来はプログラマ志望です。 授業ではアルゴリズムを勉強しています。 勉強しておいたほうがいい言語や順序みたいなものを提示してくださると嬉しいです。
- 76 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:00:29 ]
- フローチャートを勉強してるの?
- 77 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:00:50 ]
- >>75
擬似でいいからアセンブラ
- 78 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:04:44 ]
- 分かりました、専ブラに挑戦してみます。
- 79 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:08:57 ]
- プログラマでも入る分野で結構違うと個人的には思う。
>>77のアセンブラもいいと思うし、割り込みとかマルチスレッドなんかもいいんじゃね? 可読性とか汎用性とかデザインパターン、テストとかデバッグ技術もあってもいいかも? アルゴリズムって実際に役に立つかな? いろんなプログラムを山ほどこなしてるほうがいい気がする。
- 80 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:15:30 ]
- >>79
>>75の大学がどこかは知らないが、大抵大学の授業で教えるアルゴリズムっていうと 基礎の基礎で結構重要だろw
- 81 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:18:43 ]
- 学生時代を思い返してみると、オートマトンとかやってたような・・・
俺、役に立ってねぇ・・・ もっと基礎的な内容かな?ソートとか? ソートなんて、バブルソートとクイックソート以外は必要なときに毎度調べてるな。
- 82 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:19:09 ]
- >>75
宿題スレで宿題解くのオススメ
- 83 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:25:36 ]
- アルゴリズムでオートマトンはやらなかったなぁ
ソートとか探索とかリストとかやったかなぁ・・・? 仕事でそのまま使えるってことは少ないだろうけど、基礎を覚えておいて損は無い
- 84 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:29:01 ]
- 問題「ソートするプログラムを書け」
俺「qsort(...); はい終わり^^」
- 85 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:30:50 ]
- まあ、一口にプログラマといっても
「標準ライブラリに丸投げでOK」から「自力でアルゴリズムをひねり出すことを要求される」まで幅広いわけで
- 86 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:32:25 ]
- つ[安定ソートするプログラムを書け]
- 87 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:32:29 ]
- あぁ、言われて見れば重要だなぁと思ってきたw
リスト、スタック、キューとかのデータ構造とかか。 素因数分解とかは、暗号化とかの分野いかなきゃ使う機会はなさそうだな
- 88 名前:75 mailto:sage [2007/06/05(火) 22:50:14 ]
- 有り難うございます。
授業のアルゴリズムではソートやリスト構造、木構造などをやっています。 アセンブラですか。何か必要な環境等は必要でしょうか? またC++も興味があるのですが勉強可能でしょうか?環境はCygwinです。
- 89 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:55:43 ]
- >>88
やる気があれば何でも可能。 >>82のアドバイスをうけて、慣れてきたら同じ課題をCっぽい解き方、 C++っぽい解き方の両方やってみたりしても良いかも。
- 90 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:57:04 ]
- >>86
つ[std::stable_sort()]
- 91 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:08:45 ]
- >>88
紙とペンさえあれば勉強できる >>90 C言語で解け
- 92 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:18:29 ]
- 紙と鉛筆で間に合うのは頭のいい人だけ
常人は適当にmasmなりインラインアセンブラ等ケースで身に着けましょう
- 93 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:19:30 ]
- やべぇ俺頭いいのか
- 94 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:26:17 ]
- アセンブラの勉強するときはシミュレータ上で動かしたいよね
VirtualPC とか VmwarePlayer とか Bochs とか qemu とか いろいろあるけど、どれがいいんだろう?
- 95 名前:75 mailto:sage [2007/06/05(火) 23:36:48 ]
- なるべく無料で環境は揃えたいところです;
あと、どうもMicrosoft製はソフトが重いイメージがあるので微妙です。 なのでVisual Studioはどうも慣れません。 大学の先生もなるべくUNIX上でコンパイル・実行したほうがいいと言っています。
- 96 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:39:25 ]
- じゃあnasmとかどうでしょ?
- 97 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:40:24 ]
- >>95
はいはいかわいい子犬ちゃん
- 98 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:47:21 ]
- VisualStudioの環境が重ければソースを外部で編集するようにして
構成ツールをmake代わりに使ったり、clだけ利用すればいい話 てかいくらなんでもUNIX推奨は冗談だろう…
- 99 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:48:45 ]
- >>98
俺はそうしてる。つっても芽衣の開発環境じゃないんだが。 普段がテキストエディタなもんで、そっちのほうがやりやすい。
- 100 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:50:21 ]
- VisualSutudioの環境が重ければPC買い換えればいい
・・・もしかしてだいぶMSにお布施してるかな、漏れ。
- 101 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:55:22 ]
- >>95
かわいこちゃん・・・ 人の話聞いて知ったかするより、自分でWinとUnix系の違いを 自分で調べて知りなさい。
- 102 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 00:43:54 ]
- >>98
最近のゲーム機やパチンコ台の液晶なんかの場合はUNIX系環境が主流だな そっち方面ならcygwinやlinuxでなれておくと楽だぞ あのへんなら開発環境に金かからんし Winだけのプログラム勉強したいならともかく、 広い意味でプログラムの勉強したいならVisualStudioはオススメしない
- 103 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 00:46:43 ]
- プログラムの勉強なら環境はなんだっていいだろ
- 104 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 00:51:27 ]
- いいだろ
- 105 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 00:53:21 ]
- マジかよ
もうvsのインターフェースに慣れちゃったぜ…orz
- 106 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 01:23:45 ]
- >>103
MSの環境は独自の俺様仕様が多過ぎる、それに値段も高い SDKのバージョン変わるとコンパイル通らなくなったりするし 小規模なプログラムだといいけど大規模になるとあの互換性のなさには泣けてくるぞ 開発以外の余計な事に時間取られすぎるんだよ いまだに一部ゲームで古いDirectXとか使ってるのはそのせいだろうし 仕事の関係で多数の環境、日立のshcとかgcc、ボーランドCとかLSI-C、CodeWarrior その他いろいろ 使ってきたけどあそこまでかけ離れてるのはMS環境だけだ
- 107 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 01:35:06 ]
- それでもMSを勧める人がいるのはやっぱ「MSだから」だと思うよ?
SDKとかMFCをC++の勉強に使うなんて、とても勧められないし コンパイラのバグもちょくちょくあったりする。 設定に困ったときにネットで探せば色々見つかるってのは大きいと思う。 コンパイラのバグなんて、MS環境でもなきゃ中々しにくくね? まぁ、bccやgccならそれなりにサイトも多いけどやっぱMSに比べると・・・ やっぱ、作ったもんが動くからプログラミングって楽しいんじゃね? とはいえ値段や仕様変更の多さには同感だw
- 108 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 02:56:46 ]
- 値段は(学割だけだけど)凄まじいダンピング始めたからなぁ
Visual C++ は単品で持ってたけど、VSのあの安さなら買っちゃうって
- 109 名前:デフォルトの名無しさん [2007/06/06(水) 04:25:45 ]
- VC++.net2003でmain.cpp, Sphere.hとSphere.cppとファイルを分割しました
Sphere.hにint Collide( Sphere, Sphere )という関数を定義して, Sphere.cppで実装しました このint Collide( Sphere, Sphere )をinline関数にしたいのですが、上手く行きません .h, .cppのどちらにもinlineを書く, どちらか一方に書く場合と試しましたが上手く行きません どちらにもつけない場合は上手く行きます どうすればinline関数にできるでしょうか?無理なのでしょうか? よろしくお願いします
- 110 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 04:26:58 ]
- inline関数は内部リンケージを持つからヘッダファイルには書くな。
- 111 名前:109 [2007/06/06(水) 04:36:03 ]
- 内部リンケージで調べたら分かりました
ありがとうございました
- 112 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 04:55:09 ]
- 内部リンケージって言葉を聞いたばっかりで
理解せずに使ってるだけな馬鹿は無視しろ
- 113 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 04:56:48 ]
- >>110
inline 関数はヘッダに書くもんだろw
- 114 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 06:07:24 ]
- 正しくはinline関数の「宣言だけ」ならヘッダには書くな、書くなら「定義」まで
書け、って事だな
- 115 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 06:13:31 ]
- 具体例としてはジャネリックな独自テンプレートライブラリを作る時とかか
なんか極めて限られるような状況ですな
- 116 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:31:36 ]
- >>110
inline 指定とリンケージは関係ないよ。
- 117 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:32:28 ]
- >>116
でもヘッダファイルに宣言だけしたらリンカエラーでるじゃん?
- 118 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:35:02 ]
- なんという面倒くさい仕様…
これは暗に「よほどのことが無い限り使うな」と言っているので同じではないか
- 119 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:36:50 ]
- >>117
定義が無いからだろ。リンケージも inline も関係ない。
- 120 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:39:09 ]
- >>118
その認識で問題ない。 inline で速度が変わる状況なんてかなり減ってきてるし、 これからも減るだろうし。
- 121 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:40:49 ]
- もうinline化なんかコンパイラに任せろよ
適当にやってくれるだろ
- 122 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:45:38 ]
- >>118
ついでに言えば、最早コンパイラはオブジェクト間最適化を行なう時代。 inline指定なんぞせんでもコンパイラの方で勝手に(別ファイルの関数さえ)インライン展開してくれるよ。
- 123 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:46:05 ]
- >>119
静的リンケージだから定義がないんじゃないのか?
- 124 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 07:47:01 ]
- 内部、だ。
|

|