- 1 名前:デフォルトの名無しさん [2008/09/06(土) 22:45:12 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.58【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1218023777/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm ◆ソースのインデントについて 半角やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのが最も良いですが、 直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
- 664 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 19:30:51 ]
- 一応
速度は直接アクセス 安全性はゲッター だろう一般的に 最適化で速度差無い事もあるけど 普通はゲッター使いなさいと教わるはず
- 665 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 19:30:52 ]
- >>660
それだけだとうまくいくはずなのでもうエスパーさんしか アドバイスできないんじゃないかと エラーの出る最小のコードをどうぞ
- 666 名前:デフォルトの名無しさん [2008/10/03(金) 19:32:06 ]
- VC++2008のデフォルト状態Releaseでコンパイルしたものを実行し、CPUメーターで見ました。するとコアが満遍なく使われています。
私はマルチスレッドプログラムも何もしていないのに、コンパイラが自動でマルチコアに最適化してくれたということでしょうか?
- 667 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 19:35:11 ]
- ほかのプログラムが満遍なくCPUを使っていただけだろ。
- 668 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 19:42:44 ]
- >>660
インクルードガードでぐぐれ
- 669 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 19:52:56 ]
- >>665
こんな感じです。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7751.zip
- 670 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 19:54:33 ]
- >>669
#include "ca.cpp" #include "cb.cpp" これは。。 ヘッダをインクルードするようにして、多重インクルードガードすればいいと思うよ。
- 671 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 19:55:40 ]
- ボーランドのリンカ使い方知らないけど、
それぞれのcppからobj作って、それらをリンクして、exeを作るのが普通。
- 672 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 19:57:11 ]
- >>671
makefileみたらそうなってるから >>670 だけでいいんじゃないかな
- 673 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:22:08 ]
- >>670
つまり、main.cppでa.hとb.hをインクルードして、 a.cppとb.cppではインクルードガードをかけるだけて、単にメンバ関数を書くだけでいいという事ですか?
- 674 名前:663 mailto:sage [2008/10/03(金) 20:37:11 ]
- >>664
サンクスです。 やはり直接アクセスの方が速いですか。。。 参照返ししてるからほぼ同等だと思ったのですが甘かったようですね。 getter使うにしてもローカルで複数回使う場合 func1( hoge.getHoge(; ); func2( hoge.getHoge() ); func3( hoge.getHoge() ); とするより int& b = hoge.getHoge(); func1(b); func2(b); func3(b); のようにした方がオーバーヘッドは減りますよね?
- 675 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:42:29 ]
- メンバ関数はインライン関数にできてだな
- 676 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:43:35 ]
- 最適化を前提にするなら余計なことはしないほうがよいだろう。
get/setは*.hにインラインで記述するのが基本。 気になるならアセンブリリストを出力したり、実際に測定するといいよ。
- 677 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:05:57 ]
- >>674
intなら参照使わない方が早いんじゃね? どういう用途か知らないけど なんにせよ実測するのが一番だな
- 678 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:23:04 ]
- >>674
値をレジスタに置けるなら、メンバの内容をローカル変数にコピーして、 一通り操作が終わったら、メンバに書き戻す方が良いかも。 メンバへの変更 ( 副作用 ) が発生するポイントが、書き戻し部分に限定 される点もメリット。
- 679 名前:673 mailto:sage [2008/10/03(金) 21:50:44 ]
- 解決しました。
どれから読み込んでもいい様、使う関数のあるヘッダはインクルードガード付けた上で 形式上でもインクルードしておけ、って事ですね(多分)。 アドバイスくれた方々、ありがとうございました。
- 680 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 22:33:10 ]
- >>679
> a.cppとb.cppではインクルードガードをかける ヘッダ内でガードする。 多重インクルードされた結果、重複定義が発生する。 > ヘッダはインクルードガード付け となっているから理解したのかもしれないけれど。 すっきりさせるために動かない状態が続くよりは、ぐちゃぐちゃでもなんとか動く状態の ほうがいいので、動く状態をキープしたまますっきりさせられるように努力するといいですよ。 リファクタリングって言葉も調べてみてください。
- 681 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:09:43 ]
- よくwindowsプログラムのサンプルコードでInitAppとInitInstanceってあるけど、どういう分け方してるんですか?
- 682 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:31:17 ]
- エスパーに失敗した。もうちょっと情報頼む。
- 683 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:04:14 ]
- >>681
気分
- 684 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:22:24 ]
- >>681
そういう作りはWin16時代の遺物なので今となっては意味がない Win16ではアプリケーションの最初のインスタンスだけが実行すべき処理を InitApplication()に記述して、 WinMain()の引数hPrevInstanceがNULLの場合にのみInitApplication()を実行していた。
|

|