1 名前:v(^・^)v mailto:sage [2010/02/13(土) 23:18:03 ] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part77 pc12.2ch.net/test/read.cgi/tech/1263556932/
112 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 10:58:46 ] >>111 可変長引数パラメータって何? 関数引数の ... のこと?
113 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 11:23:46 ] >>112 そうです。 使い方はわかるし、boostも使い方は理解できるんですが 何に使うのかがわからないんです。 特に後者のboostは、仮想関数の引数としてfunctionを利用しても 結局テンプレートだからオーバーロードになるわけですよね? 呼び出し側で型指定するわけですし、多態的に動作させるのもできないのでは? ここで混乱している感じです。
114 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 11:26:48 ] >>113 printf() とか。 まぁ C++ では基本的に使わないな。 boost::function とは関係ないと思うけど、何のこと言ってんの?
115 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 11:32:54 ] >>114 返り値の型、引数の型を指定して関数ポインタを楽に生成できるじゃないですか。 このテクニックを利用して、引数の数、型が変化する処理を多態的にさせたいんです。
116 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 11:43:01 ] >>113 可変長引数に関しては>>114 に同じくprintfがいい例だと思う。 可変長引数は、C++ではあまり推奨おらず、printfに関してもboost::formatを使った方がいい。 ttp://www.kmonos.net/alang/boost/classes/format.html boost::functionに関しては、引数の型(個数も含む)が違えば、boost::functionの型も変わる(boost::functionはクラステンプレートであってクラスそのものではない)。 テンプレートによる静的多態なので、仮想関数の動的多態のようには扱えない。
117 名前:116 mailto:sage [2010/02/17(水) 11:55:42 ] 付け加えておくと、 ・可変長引数とboost::functionの使いどころは別である ・boost::functionは関数ポインタを使いやすくした物 あと、>>116 の最後の行は紛らわしい書き方だった。 boost::functionの1つの具現化(戻り値と引数の型が同じ)においては、関数ポインタによる動的多態である。
118 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 12:11:45 ] >>117 なるほど! 多態とはまた別物なんですね。 ボリモルフィズムが一気に広がるかもと思ったんですがね。 ありがとうございました。
119 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 12:22:49 ] >>115 boost::function<void ()> で、引数は全部 bind するとか、 boost::function<void (std::vector<boost::any> const&)> で引数について型消去しながらやりくりするとか。
120 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 13:01:27 ] (´;ω;`)さ、さ、さむいお
121 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 13:22:58 ] 利用者が仮想関数を呼び出す時、仮想関数の実装を知らなけば引数を渡せなくなって、ポリモーフィズムのメリットがなくなる気がするけど。
122 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 14:15:09 ] いらない
123 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:13:58 ] 非ブロッキング、ロックフリー、ウェイトフリーの定義 www.gameenginejp.com/misc/2010/2010.html
124 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:37:29 ] スレッドセーフのSTLクラスは使えるな。 boostのどのライブラリより上では。 boostにこんなのないだろ。
125 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:45:26 ] ありますがな・・・
126 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:46:17 ] ありませんがな・・・
127 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:50:33 ] TBBの日本語サンプルサイトつくってくれよ。 マルチコア時代で、CPUメーカー製の、フリーのこのライブラリは強力すぎる。 できたら毎日クリックしに行くからさ。 ja.wikipedia.org/wiki/Intel_Threading_Building_Blocks 抜粋 並列処理アルゴリズム parallel_for ループ間で依存性がない単純なループの並列処理 parallel_reduce 指定した範囲をより小さな範囲に再帰的に分割し並列処理 parallel_scan 並列プリフィックスを計算 parallel_while 不明領域、動的領域変更を伴う独立したループ操作 parallel_sort 並列処理でソートを行う pipeline パイプライン処理 コンテナクラス concurrent_hash_map STLのmapクラスをスレッドセーフにしたもの concurrent_queue STLのqueueクラスをスレッドセーフにしたもの concurrent_vector STLのvectorクラスをスレッドセーフにしたもの
128 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 16:13:42 ] サンプルはないけど日本語リファレンスあるし間に合ってる感じ
129 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 18:53:08 ] もうひとつだけ例を見てみましょう。 static LONG flag; if (flag == FALSE) { flag = TRUE; ... flag = FALSE; } このコードがまずいことはもうお分かりですね。 NT にはフラグのチェックとセットをアトミックに行える InterlockedCompareExchange がありますから、そちらを使いましょう。 if (InterlockedCompareExchange(&flag, TRUE, FALSE) == FALSE) { ... InterlockedExchange(&flag, FALSE); } hp.vector.co.jp/authors/VA000092/win32/standard-coding.html
130 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 18:58:30 ] 8スレッド InterlockedIncrement 4.398sec InterlockedCompareExchange 4.460sec CriticalSection 6.297sec d.hatena.ne.jp/streakeagle/20090205/1233833511 VC++ CriticalSectionの速度 何もないループが、0.515106秒に対しクリティカルセクションでは7.089556秒となった。 www.cycleof5th.com/tips/index.php?date=2007-05-30/3 同期オブジェクトの要約 速度 クリティカル セクション 高 ミューテックス 低 セマフォ 低 イベント 低 メータード セクション 高 msdn.microsoft.com/ja-jp/library/cc429052.aspx
131 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:08:05 ] スレッドセーフなキューを複数個用意してキューにデータ来たら、 それぞれ直列に動作する関数を動かしたいんだけど 作業が終わったらキューを観察に行くけど無かった場合、次に入ってくるまで どうやってまてばいいんだ? ひとつとしてビジーループはあるが。 それなら別変数用意してロック掛けた方が良い。ロック無しで出来る? キューは一カ所にしてすべての処理関数スレッドで共有する方が無駄ないか。
132 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:22:53 ] キューに挿入する側が、余りのスレッドを監視して空いてたら処理させればいいか。 これならロック無しでアトミック命令だけでいけそう。
133 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:24:54 ] しかしスレッドを生成するコストも馬鹿にならないから スレッドの生成・消滅はせず、恥に生成したやつを使い回したいところ。 やっぱロックいるか。処理終了してキュー待ちのロック。
134 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:27:47 ] スレッドの生成は恥
135 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:41:16 ] wait付きのビジーループでいいか
136 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:32:25 ] C++でコルーチンってできないの?
137 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:32:53 ] boostにあるにょ
138 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:35:08 ] あるんだ boostまじ何でもあるな 奴らはいったい誰と戦ってるんだ
139 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:37:11 ] 言われてみるとその言葉かなりしっくりくるよな。 C++の最適化に伴う変態記法なんて禿に親を殺されでもしない限りできないし。
140 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:39:02 ] >>138 部品の足りない世界じゃないの? というかWTLもC#並に充実させてください
141 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:45:06 ] 駆動系の部品はハイスペックだが シートもハンドルもなく部品丸出しの車
142 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:47:45 ] C++はC++です車ではありません 好い加減な比喩は滑稽なのでやめてください
143 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:48:41 ] コルーチン ttp://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3 Boost C++の何て言うライブラリで出来るのですか?
144 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:49:43 ] boost.cotoutine vaultにあるにょ
145 名前:デフォルトの名無しさん [2010/02/17(水) 20:52:04 ] >>141 部品丸出しな上 自己責任で組み替え自由な仕様だな。
146 名前:デフォルトの名無しさん [2010/02/17(水) 20:52:32 ] >>141 部品丸出しな上 自己責任で組み替え自由な仕様だな。
147 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:52:41 ] >>141 部品丸出しな上 自己責任で組み替え自由な仕様だな。
148 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:53:21 ] 車への例えがどれも的外れでワロスw
149 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:53:33 ] >>141 部品丸出しな上 自己責任で組み替え自由な仕様だな。
150 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:55:48 ] だからといってヨソの車がそんなに安全かというと……
151 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:57:31 ] >>144 valtですか。 ありがとうございます。
152 名前:デフォルトの名無しさん [2010/02/17(水) 20:58:22 ] Boost.Coroutine ttp://hamigaki.sourceforge.jp/doc/html/coroutine.html 2009-12-12 - melpon日記 - C++すら(ry Boost][C++]Boost.勉強会の資料 ttp://d.hatena.ne.jp/melpon/20091212 ttp://melt.sytes.net/data/Boost.Coroutine.ppt ・Boost.Fiber という対抗馬も最近出てきた
153 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 20:59:10 ] 理想的には部品丸出しではないが、 バカが作ると部品を理解していなければならなくなる 仕様だな。
154 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:06:26 ] マルチスレッドキューでロックしないサンプルできた。読み込むに失敗・キューがないときにwaitはいれたが。 #include "include/tbb/concurrent_queue.h" #pragma comment (lib, "tbb.lib") #include <process.h> #include <windows.h> #include <iostream> using namespace std; using namespace tbb; concurrent_queue<int> que; int s[2]={0,0}; unsigned WINAPI fnc(void *n) { int x,num=(int)n; while(1) { if( !que.try_pop(x) ) { Sleep(100); continue; } if(x==-1)return 0; s[num]+=x; } } int main() { HANDLE hd[2]; int n; for(n=0; n<2; n++) hd[n]=(HANDLE)_beginthreadex(NULL, 0, fnc,NULL, n ,NULL); for(n=0; n<=1000; n++) que.push(n); que.push(-1); que.push(-1); WaitForMultipleObjects(2, hd, TRUE, INFINITE); cout<< s[0]+s[1]<<endl; getchar(); }
155 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:08:51 ] 0から1000まで足すだけ。キューへマルチスレッドでpush、popして 読み取って空いてるスレッドが足し合わせていくサンプル。 答えは合ってたよ。
156 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:10:28 ] キューではロックしているだろうがな。そこを自作せずに済んだという話だ。
157 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:20:49 ] プログラム組んでて returnって打ったつもりだったら tryit, って打ってた なんか感動した
158 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:21:46 ] rをtにずらして打ってみると・・・!?
159 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:22:04 ] ゴルゴはtrycatchfinallyを0.5秒でタイプするらしい
160 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:23:35 ] >>157 夢を感じた
161 名前:デフォルトの名無しさん [2010/02/17(水) 21:33:09 ] HDL ではごく普通というか大前提の話なんだが 直列処理という枠に凝り固まった頭で見ると驚きの連続なんだろうな
162 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:39:17 ] 任意の整数を返す関数が、失敗も正常フローだった場合に すっきりするエラー通知の仕方はある?
163 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:40:28 ] 任意の整数を返す関数が、失敗も正常フローだった場合に すっきりするエラー通知の仕方はある?
164 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:42:11 ] 任意の整数を返す関数が、失敗も正常フローだった場合に すっきりするエラー通知の仕方はある?
165 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:45:58 ] 任意の整数を返す関数が、失敗も正常フローだった場合に すっきりするエラー通知の仕方はある?
166 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:46:42 ] パラメータになんか持たせるとか
167 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:57:56 ] なにを?
168 名前: ◆GWRSHcLrd6 mailto:sage [2010/02/17(水) 22:01:15 ] _beginthreadとCreateThreadは何が違うんですか? というかどっちを使った方がいいんですか?
169 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:07:13 ] >>167 判断できる情報を >>168 適材適所。常にどちらかがよいということはない
170 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:11:21 ] C++の配列サイズ指定で変数は使えることもあるんでしょうか?それともコンパイラ依存でしょうか? MinGWで下をコンパイルは正常にでき(Warningも出ない)、arrayのsizeofは32byteとなってちゃんと確保されているようです。 #include <iostream> using namespace std; int main() { int num = 3 + 5; int array[num]; for (int i = 0; i < num; i++) { array[i] = i; } cout << sizeof array << endl; }
171 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:12:44 ] 正確にはC++ではなくC99で使える様になったはず
172 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:18:32 ] >>170 gccの独自拡張
173 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:25:20 ] >>168 CreateThreadはWindowsAPI、_beginthreadはCランタイム。 CreateThreadで生成したスレッドでCランタイム関数を使うとExitThreadしたときにわずかだがメモリリークが発生するため、 MSはそのような場合には_beginthreadを使うように推奨している。
174 名前: ◆GWRSHcLrd6 mailto:sage [2010/02/17(水) 22:32:21 ] なるほど。 参考になりました。 unix - windows 互換のスレッド関係の関数は無いんですかね・・・
175 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:38:29 ] Cランタイムって何?
176 名前:154 mailto:sage [2010/02/17(水) 22:41:42 ] 修正。引数渡す場所間違えて一スレッドしか動いていない。 #include "include/tbb/concurrent_queue.h" #pragma comment (lib, "tbb.lib") #include <process.h> #include <windows.h> #include <iostream> using namespace std; using namespace tbb; #define N 3 concurrent_queue<int> que; int s[N]; unsigned WINAPI fnc(void *n) { int x,num=(int)n; while(1) { if( !que.try_pop(x) ) { Sleep(100); continue; } if(x==-1){ cout<<"正常終了number:"<<num<<endl; return 0;} s[num]+=x;Sleep(rand()%50); }} int main() { HANDLE hd[N]; int n; for(n=0; n<N; n++) s[n]=0; for(n=0; n<N; n++) hd[n]=(HANDLE)_beginthreadex(NULL, 0, fnc, (void*)n, 0 ,NULL); for(n=0; n<=50; n++) que.push(n); for(n=0; n<N; n++) que.push(-1); WaitForMultipleObjects(N, hd, TRUE, INFINITE); int sum=0; for(n=0; n<N; n++) {cout<< "スレッド"<<n <<"の合計 "<<s[n]<<endl; sum+=s[n]; } cout<<"総和 "<<sum<<endl; getchar(); }
177 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:44:40 ] >>174 pスレッド windowsというのがあるが、おすすめしない。 一度にアクセスが起きるとバグった経験有り。同じ物をwindowsの命令に書き換えたら動いた。 スレッドのどれか一つ or全部の終了待ちがない気がする。
178 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:47:23 ] Open Source POSIX Threads for Win32 sourceware.org/pthreads-win32/
179 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:51:55 ] 一時期windowsであっても、linuxの互換コードで書くべきだという考えが起こり 全て統一しようとしたがPthread for winがうまく動作しないので諦めた経験ある。 現在の環境で生産性の良い、短いコードで済ますのが一番という考えになった。 完成品が出来なければ意味ない。完成していれば他OSへも移植しやすい。
180 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:00:42 ] QtやBoostその他 ラッパライブラリじゃできないの?
181 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:02:56 ] Qtもboostも標準にはいってないじゃん サイズもでかいし linuxでどこでも使えるのはPthreadだけでは
182 名前:180 mailto:sage [2010/02/17(水) 23:07:16 ] >>181 その方、Pthreadはいつから標準になったと申すか。
183 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:09:31 ] POSIX Threads, or Pthreadsのライセンスは This implementation is free software, distributed under the GNU Lesser General Public License (LGPL). え?誰も聞いてないって?
184 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:13:49 ] 入ってないlinuxはないんでは。c/c++がコンパイル可能な環境なら。
185 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:16:36 ] 標準っていうか、プリインストールって言いたかったわけか。
186 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:18:22 ] ち、違うよ。
187 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 00:57:43 ] どっちもbccでうごかん。 lock-freeの高速キューを作ってくれよ。 インラインアセンブラ・マクロの特殊構文の多用が原因と思われる。 windows 標準のcas命令のみで頼む。 Thread Safe Template Library sourceforge.jp/projects/freshmeat_tstl/ Intel Threading Building Blocks www.threadingbuildingblocks.org/
188 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 01:43:02 ] bccなんてポンコツ捨てろよ
189 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 04:41:14 ] bccは毎年新規で販売してるんだぞ。 コンパイル速度速くて良いんだこれは。
190 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 04:49:50 ] httpサーバーなどへIf-Modified-Sinceをつける場合statでファイルの更新日付を 取得してどのように変換すればいいのでしょうか? 日本時間に直すサンプルは見かけるのですがGMTのまま文字列化する方法が わかりません
191 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 08:08:13 ] スレッドセーフキューがマルチスレッドの要なんです マクロやアセンブラ使わずに書いてくれると喜ばれますよ
192 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 08:22:15 ] STLportがスレッドセーフなSTLだった これつかお
193 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 11:43:35 ] わざわざいうな
194 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 15:34:49 ] >>190 strftimeじゃできないの?
195 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 19:14:32 ] プロの方はスマートポインタを使うのが基本とのことですが、例えば引数なんかも hoge( shared_ptr<Test>& sp )といったかんじになるんでしょうか? それとも受け渡しは生のポインタで行い、オブジェクト側でスマートポインタに格納ような 使い方ですか?
196 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 19:44:09 ] 参照渡しだよ
197 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 20:07:01 ] STLportがbccでコンパイルできん
198 名前: ◆GWRSHcLrd6 mailto:sage [2010/02/18(木) 20:43:01 ] >>195 僕はクラスのメンバ関数が前提なら、 関数を所有するクラスがオブジェクトをメンバ変数に保持するときはスマートポインタを、 一時的に使うだけなら参照で渡します。 >それとも受け渡しは生のポインタで行い、オブジェクト側でスマートポインタに格納ような 一番やっちゃいけない気がするんですけど・・・
199 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:44:30 ] >>171 >>172 アドバイスありがとうございます。 手元のどの参考書見ても変数は使えないと書いてあってあれ?と思っていたしだいです。 Visual C++で使えないようなのでgccだけなんですね。
200 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:19:13 ] >196 >19 ありがとうございます。 今試してみましたが同一ポインタを複数のshared_ptrに格納すると、 shared_ptrの数だけデストラクタが呼ばれてしまうんですね。 基本は参照で複製を作らないようにするということですね。
201 名前:デフォルトの名無しさん [2010/02/18(木) 22:21:29 ] >>200 そう。 RAIIを徹底しろ。
202 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:21:59 ] 失礼しました。 >>196 >>198 でした。
203 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:22:59 ] g++やVC++などの有名どころのC++コンパイラについてお聞きしたいのですが、 コンパイル時定数を使った ttp://codepad.org/EmT4J9d3 こんなifによる分岐があるとします。 このとき、成果物.exeはちゃんと最適化されて 分岐が消えるのでしょうか? よろしくお願いします。
204 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:25:05 ] codepadで使ってるg++とVC9.0では消失を確認
205 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:36:54 ] ありがとうございます。 const bool ctc = 100; // compile-time constants を bool ctc = 100; // NOT compile-time constants にしても同じでしょうか? (volatileは付けません。) お手数をおかけ致しますが、よろしくお願いします。
206 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:50:06 ] const bool ctc = 100; // compile-time constants に関しても同じ(キャストはちゃんとした方がいい)。 そもそも実行時への互換性を保たないと最適化というのはできないからね。 bool ctc = 100; // NOT compile-time constants でも、単純にctcへの変更が無い事から最適化がなされた(204と同じ環境で)。 ただ、このケースは後のコードに完全に依存しているから考察する価値はあるのかどうか疑問だな。
207 名前:205 mailto:sage [2010/02/18(木) 23:02:24 ] >>206 ご教示ありがとうございます。 そういったことは、どうやって調べればよいのでしょうか? .asmを出力して調べているのでしょうか?
208 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 23:05:31 ] >>207 そうだよ。
209 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 23:08:17 ] YOUバイナリ読んじゃいなYO
210 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 23:08:49 ] >>208 ありがとうございます。 asmからは逃げ回ってきているので全然読めそうにありません。 勉強しなければなりませんね。。。
211 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 23:09:33 ] 別に勉強しなくても片手間にasmの命令リストと見比べてるだけだけどね。
212 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 23:15:53 ] asmってコンパイラやアセンブラによって 扱いが違うからやだ