- 1 名前:デフォルトの名無しさん [2006/08/22(火) 09:21:31 ]
- はきだめのスレへようこそ
ここは、C/C++に挫折し、それにもかかわらず、C/C++やらなければならない者達がたむろするスレです。 なお、質問する人は回答はあまり期待しないでください。 前スレ:はきだめC/C++下級者の質問箱 pc8.2ch.net/test/read.cgi/tech/1124256027/
- 756 名前:デフォルトの名無しさん [2008/06/07(土) 23:03:18 ]
- なんで .cpp と .h に分けるの?
h に全部書いちゃいけないの? (javaって1ファイルだよね?)
- 757 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:08:17 ]
- コンパイル激遅でいいならやればw
- 758 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:23:32 ]
- kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6829.txt
データ対の大小比較を行った回数を計算し出力するプログラムなのですが while(1){ count++ while(d[++i]<key) count++; count++ while(d[--j]>key count++; この部分は これで合ってるのでしょうか?
- 759 名前:デフォルトの名無しさん [2008/06/08(日) 00:35:08 ]
- >>757
遅くなるの? それは知らなかった。 Boostってhppだよね? あれ、遅いのに採用してるの?
- 760 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:38:27 ]
- >>759
インクルードってどういうものか分かってる? ファイルの中身を合成するものなんだよ? 全てのコードをヘッダファイルに書いて main のある .cpp でそれを全部インクルードしたとすると、 それら全てのファイルの中身を合成したファイルを 毎回コンパイルすることになるんだぜ。 そのファイルの中の1カ所を変更しただけでな。
- 761 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:40:13 ]
- >>759
boost 全部を一気に使う訳じゃないだろ。 まあ、boost 使うとそれなりにコンパイル遅くなるけど。 そのためのプリコンパイル済みヘッダファイルだな。
- 762 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:42:53 ]
- >>760
ただの宣言をするものと思ってた。 >>761 確かに、一気には使わないね。 ありがとう。
- 763 名前:デフォルトの名無しさん [2008/06/08(日) 00:44:28 ]
- 質問です。
if(整数型) ってやったときに 数字が0だと偽、符号が正だと真と聞いたのですが ゼロ以下だとどっちになりますか?
- 764 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:45:25 ]
- >>759
Boostの場合はテンプレート使っていてヘッダに書かざるを得ないという事情がある。 もちろん、ライブラリのリンクという面倒事を回避できるという点も影響を及ぼしているとは思う。 要LIBのものでも必要最低限しかLIBに入れていない。
- 765 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 01:02:37 ]
- >>763
その説明はおかしい 0が偽で0以外が真 っていうかif(-1)とでもやって試せばどうかね
- 766 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 01:54:36 ]
- 自分で試してあやふやな結果を得るくらいならここで質問して確実な回答を求めます。
- 767 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 02:02:47 ]
- 規格票をおよみください
- 768 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 02:06:57 ]
- 規格以前の問題。
まともな C++ の本読め。
- 769 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 06:58:45 ]
- まともなC++の本かどうかを判断するには知識が・・・
- 770 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 08:51:07 ]
- 卵が先か鶏が先か。
- 771 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 08:57:06 ]
- 代理出産だー
- 772 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 11:56:17 ]
-
本ならここで聞け ttp://pc11.2ch.net/test/read.cgi/tech/1209441159/
- 773 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:08:28 ]
- ここでの回答なら確実だと思ってるのかな。
- 774 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:09:44 ]
- if(-1) (-1に限らず負の数)くらいを試せないのはちょっとしんどいな。
いくらでも試す方法はあるだろうに・・・
- 775 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 02:57:06 ]
- C++だと環境に依存するコードが多くてバグるからCで書け
といわれたんですがC++特有で環境に著しく依存する物って何でしょう 仮想関数や継承の挙動が大きく変わるとは考えにくいんですが。
- 776 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 09:40:29 ]
- >>775
言ったやつに聞いてくれよ。
- 777 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 11:43:49 ]
- >>776
いったやつが理由を知らないんだよ。 知ったかぶりだよ。
- 778 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:31:53 ]
- >>775
例外処理とか、標準ライブラリの実装とか、の話かな? いずれにしても挙動が変わることはさすがにないでしょ。 もちろん規格に沿った範囲内の話で、未定義動作を利用した コードなんかについては知ったこっちゃ無いけど。
- 779 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:07:23 ]
- ども。やはりそんなものですよね…
上司が自信満々に断言するので突込んで聞けなかったんです
- 780 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:17:23 ]
- vector<Hoge>::const_iterator iter = hoge.begin();
(*iter).name で、なんでアスタリスクが必要なの?
- 781 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:41:34 ]
- iter は const_iterator であって Hoge ではないから
iter.name という表記は const_iterator のメンバ name を参照しようとしているのであって、Hoge の name を見ているのではない iter->name ならおk
- 782 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:48:02 ]
- >>781
ポインタと同じように考えればいいのなか?
- 783 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:36:46 ]
- >>782
うん
- 784 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:27:12 ]
- >>783
アリガd
- 785 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:37:41 ]
- イテレータはポインタを模したクラスのことだからな。
- 786 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:20:01 ]
- いい野中
- 787 名前:デフォルトの名無しさん mailto:age [2008/06/09(月) 23:16:16 ]
- 配列の要素に-1を指定した時の挙動について教えてください
char a; char b[10]; と宣言しておいて、b[-1]を指定したら、aを意味していることになりますか?
- 788 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:17:31 ]
- なるはずがありません
- 789 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:17:37 ]
- >>787
なりません。未定義動作になります。
- 790 名前:787 mailto:sage [2008/06/09(月) 23:26:09 ]
- FreeType2という、フォントレンダラのソースを読んでいたら
配列の添字に-1を指定している箇所があり、気になって質問しました このソフトはC言語で書かれています。 やはりこれはイレギュラーな使い方なんですね
- 791 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:36:26 ]
- ほんとに配列として宣言されてた?
mallocで確保したアドレスに+1したものを配列として使ってたりしない?
- 792 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:07:48 ]
- メンバ変数の場合は宣言順にメモリに置かれることが保証されてるので、
あとはアラインメントに関して処理系独自の定義が行われていれば その処理系では保証されるね。
- 793 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:34:15 ]
- >>792
されません。配列の添え字演算(ポインタ演算)で配列の範囲外にアクセスしたら未定義動作です。
- 794 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:43:51 ]
- 未定義動作を発生させるコードについて、ある処理系が特定の挙動を保証することがあっても構わない。
- 795 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:40:52 ]
- [-1]だけではそれが間違ってるとは言い切れない。
char a[10], *p p = a + 1; とすれば p[-1] == a[0] であり、そこにアクセスするのは何の問題もない。
- 796 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:05:10 ]
- enumは変数宣言出来るけど
enum変数自体 int型で特に特別な変数ではないし 他の変数で代用可能だから活用法が思いつかない どういった活用法があるのですか?
- 797 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:25:06 ]
- たしかに定数宣言+typedef程度の意味しかないけど、
C++なら多重定義できるのが便利と言えば便利、特にストリーム入出力。 これも主にC++のことだけど、クラス内で定数宣言するのにも使った。 static constのおかげでこの用途からは退き気味だけど。
- 798 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 11:13:14 ]
- >>796
数値に特別な意味がない場合に、シンボル(名前)で記述できた方が判り易いことがしばしばあるから。 古いCだとdefineマクロしか選択肢がなかったのでデバッグ時に苦労したけれど、 enumならデバッガにシンボル情報をくれてやりさえすればシンボルのまま扱えるわけだ。
- 799 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:35:23 ]
- >>796
信号機を作るときに enum state { green = 0, yellow, red, }; と状態を宣言しておけば便利ジャン。 黄色の次は紫に変わるようにしろ、と言われたときでもyellowの次の行にpurpleを足せばいい。 static constだとredの値も変更しなくちゃならない。
- 800 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 15:11:52 ]
- つまり
if (yello) とかしとけば数値を気にしないで便利
- 801 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 15:25:29 ]
- >>799-800
そこは理解済みです、言われている通り #defineやconstよりはるかに便利だと思います >>796で質問したことをコードにすると enum タグ名 { 名前1,名前2,・・・ } 変数宣言 とした場合、宣言した変数の活用方について教えて下さい、という意味です 説明が簡単過ぎてうまく伝わっていなくて申し訳ないです stractならデータ管理が目的なので利用法が思いつくのですが enumの方は使いどころがいまいちピンときません
- 802 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 15:29:34 ]
- enumシンボルのことでなく、enum型変数ってことか?
>797とか。後は、例えばenum state conditionとか宣言しておけば condition変数にはenum stateのシンボルしか入れない積りであることが明確になる。 コンパイラによっては、switch (condition)したときにシンボルの抜けがないかもチェックしてくれる。
- 803 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:07:53 ]
- >>801
>>2-3
- 804 名前:デフォルトの名無しさん [2008/06/13(金) 21:40:38 ]
- >>801
構造体の場合 typedef struct{ int a; double b; }HOGE; みたいに変数宣言するんじゃなくHOGE型として宣言しといたほうが typedefせずグローバルで変数宣言すると何かとふべんだから typedefして使うところで変数宣言したほうが良い enumなら下記みたいに宣言したりする。 typedef enum {FALSE = 0,TRUE = 1} BOOL;
- 805 名前:誰か一緒に考えてください [2008/06/13(金) 22:37:30 ]
- もしプロトコルを開発するならどんなプロトコルにしますか??
- 806 名前:デフォルトの名無しさん [2008/06/13(金) 22:49:23 ]
- >>805
漠然としすぎ
- 807 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:59:08 ]
- >>805
>もしプロトコルを開発するならどんなプロトコルにしますか?? 既存のプロトコルを利用できないか、再検討する。
- 808 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:32:10 ]
- enum の話で考えたんだけど、
enum のすべてのメンバがそのスコープで有効になるのは勘弁してほしい。 メンバが多いと名前が衝突する可能性が高くなるし、 enum Style { None, A, B }; enum ExStyle { None, C, D }; みたいに同じ名前を使えないのは痛い。 仕方ないから、 namespace Style { enum Style { None, A, B }; } namespace ExStyle { enum ExStyle { None, C, D }; } とか宣言して、 Style::Style style = Style::None; みたいに使ってる(非標準だけど VC++ は一応通してくれる)。 俺は本質的に enum の使い方を間違えてるんだろうか? >>802 の言うように、特定の値しか入れない場合とかに使ってるんだが。
- 809 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:41:17 ]
- >>808
class内に置く方法もあるぞ。
- 810 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 17:02:09 ]
- >>809
なるほど。 class Style { public: enum _Style { None, A, B }; private: _Style value; public: Style() : value(None) { } Style(_Style value) : value(value) { } Style(const Style &style) : value(style.value) { } bool operator ==(const Style &style) { return value == style.value; } bool operator !=(const Style &style) { return value != style.value; } operator int() { return (int)value; } }; みたいにすれば Java, C# の列挙型と同じように扱えるわけか。switch にも入るし。 しかも #define とかうまく使えばこれを毎回書かなくても使い回せそうだ。 すばらしい一言アドバイスをありがとう。 ・・・もしかして常識ですか?
- 811 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 19:48:18 ]
- 残念ながら
- 812 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:40:33 ]
- あの、>>808ってどこが非標準なんですか?
名前空間と列挙型が同一の名前を持っていることでしょうか。
- 813 名前:808 mailto:sage [2008/06/16(月) 00:05:50 ]
- >>812
VC++ では >コンパイラの警告 (レベル 1) C4482 >エラー メッセージ >非標準の拡張機能が使用されています: enum 'enum' が限定名で使用されます >型の中の列挙型を参照するときは、列挙型の名前を指定する必要はありません。 だと。(型名)::(列挙子名) とするのは非標準らしい。 よく考えたら #define enum_class(Type) \ class Type\ {\ private :\ int value;\ public :\ Type() : value(0) { }\ Type(int value) : value(value) { }\ operator int() const { return value; }\ operator int &() { return value; }\ enum Tag;\ };\ enum Type::Tag とかすればほとんど C# ライクな列挙型もどきができるな。 これも非標準だし、列挙型みたいにする意義も薄れてるが。
- 814 名前:デフォルトの名無しさん [2008/06/16(月) 22:51:16 ]
- C/C++のばかたれっ!!
あー すっきり!! もやっとボール 100000000個くれ!!
- 815 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:53:38 ]
- >>813
それは >808 の namespace を使った例に対して Style::Style::None とした場合の警告じゃないか? Style::None なら最初の Style は namespace 名だから、その警告には該当しないだろ。
- 816 名前:デフォルトの名無しさん [2008/06/17(火) 11:02:38 ]
- すまぬがちょいと質問。
下記のような構造体の中に構造体の中に構造体が入ってるような形にしてるんだが、 矢印の所でエラーで止まるんだ。 ちなみに「struct FGroup *fGroup」は空のまま。(初期化も何もせず) ほんまに原因不明なんだぜ・・・ デバッグ出来ない環境だから、エラーの原因は不明なのよおおお // h struct FGroup { char strKey[40]; }; struct AInfoGroup { struct FGroup* srcfn[10]; }; struct MatchingResultGroup { struct AInfoGroup* aig[6]; }; // cpp struct MResultGroup *res; 〜中略 resに色々格納〜 struct AInfoGroup *aiGroup = res->aig[0]; for(int j = 0; j < 9; j++) { struct FGroup *fGroup = (*aiGroup).srcfn[j]; if((*fGroup).strKey != NULL) { char tmp[40]; strcpy(tmp, (*fGroup).strKey); ←ココでエラー } }
- 817 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:08:24 ]
- >>816
エラーメッセージぐらい貼れ。 人に原因を調べて欲しいならソースを略すな。 ↓これ見ただけでポインタをよく理解していないというのがわかる。 > if((*fGroup).strKey != NULL) { 入門サイトをよく読みなおしたほうがいいかもしれない。
- 818 名前:デフォルトの名無しさん [2008/06/17(火) 11:18:02 ]
- エラーメッセージですか。
MinGW Developer Studio にてソース作成して VC++にてDLL連携してしているので下記のようにしか表示されません。。。 ハンドルされていない例外はACMatch.exe(MSVCRT.DLL)にあります: 0xC0000005: Access Violation。 例外処理 (初回) は ACMatch.exe (MSVCRT.DLL) にあります: 0xC0000005: Access Violation。 プログラム 'ACMatch.exe' はコード 0 (0x0) で終了しました。 >if((*fGroup).strKey != NULL) { これは策がもうなくて、ものは試しにでやってみたのを削除し忘れていました。。。
- 819 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:22:13 ]
- >>816
>デバッグ出来ない環境だから、エラーの原因は不明なのよおおお それでプログラミングしようってのが無謀。
- 820 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:03:38 ]
- 中略部分を晒すつもりが無いなら、終了。
- 821 名前:816 [2008/06/17(火) 12:53:33 ]
- >>819
無謀なのは承知です。printfにてエラー発生箇所は分かるのですが 原因を特定する為のデバッグのみが出来ない状況ですので それで納得し、何とかやっております。 >>820 記述通り「struct FGroup」はヘッダでの宣言のみにて 中略部分ではstruct FGroupへの格納どころか、 struct FGroupの要素のstrKeyが一切記述されていなかったので中略していました。 それでも晒した方がよろしいでしょうか?
- 822 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:59:16 ]
- >>821
相談したいなら晒したほうがいい。 でも、 strKey に値が設定されて無いなら strcpy でぶっ飛ぶのはあたりまえ。
- 823 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:02:48 ]
- >>815
ごめん、確かに (名前空間名)::(列挙子名) は問題ないわ どっかで Style::Style::None みたいなことしたから警告でたんだろうな >>808 そのものは非標準ではありませんでした。 (>>813 の「列挙型の前方宣言」は非標準のはず)
- 824 名前:816 mailto:sage [2008/06/17(火) 13:07:13 ]
- C言語はjavaのように自分で初期化しなくても
初期化されいてるとどこかで読んだ記憶があったので、 strcpyにて複写しても大丈夫かと思ってたのですが、、、駄目だったのですか?
- 825 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:11:13 ]
- >>824
記憶があるのならどこで読んだか思い出して内容を確認してくれ。 たぶん間違いだから、 Web 上の記事なら晒して欲しい。 C言語で自動初期化(ゼロ初期化)が入るのは非ローカル変数かローカルで static な変数のみ。
- 826 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:36:19 ]
- printf分でデバッグウィンドウに情報出力とか可能ですか?
- 827 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:49:18 ]
- OutputDebugString関数
- 828 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:49:36 ]
- >>816
MResultGroupってMatchingResultGroupのtypedefか? resに色々格納って言ってるけど、MResultGroupのインスタンスはちゃんと確保されてるのか? fGroup自体が0(NULLはC++では使わない方が良い)だったりしないか? 今回のエラーには関係ないけど、j < 9 は合ってるのか?j < 10じゃねーか?
- 829 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:44:12 ]
- 数分前まではちゃんと動いてたのに、
急にこんなエラーを吐き出しました。 開発ソフト:BCC Developer 状況:コンパイラもデバッカもライブラリも誤字脱字共に無い、 エラーの内容: > C:\borland\bcc55\Bin\make.exe -fDebug\dxtest.mak -B TARGET MAKE Version 5.2 Copyright (c) 1987, 2000 Borland bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -L..\DxLib -DDEBUG -nDebug -I..\DxLib -c C:\puroguram\dxtest\test.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland c:\puroguram\dxtest\test.cpp: bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -L..\DxLib -DDEBUG -eDebug\dxtest.exe Debug\test.obj Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: Could not open Debug\dxtest.exe (program still running?) ** error 1 ** deleting Debug\dxtest.exe Build End !! (Elapsed time 0:07.578) 書いた物: #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode( TRUE ) ;//ウィンドウモードに変更する関数 if( DxLib_Init() == -1 ) return -1;//初期化処理する関数 LoadGraphScreen( 0 , 0 , "char.png" , TRUE ) ;//画像を表示する関数 WaitKey() ;//何か入力があるまで待つ関数 DxLib_End() ;//終了処理をする関数 return 0 ; }
- 830 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:52:11 ]
- >>829
エラーメッセージをよく読め。アドバイスしてくれてるじゃないか。
- 831 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:19:50 ]
- >>830
もう一度よく調べてくる
- 832 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:35:52 ]
- program still running?
program still running? program still running? program still running? program still running?
- 833 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:51:11 ]
- program still running? 訳(プログラム・動かない・見出し)
って意味であってる?
- 834 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:53:05 ]
- つまらん
- 835 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 14:02:45 ]
- ちゃんと辞書を引こう
- 836 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 14:06:46 ]
- program still running? (訳:あなたは気が付いていないけれど プログラムは静かに動き続けているだろう。 私にその健気なプログラムを殺してしまえというのか?)
- 837 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 17:27:22 ]
- はい、もちろん幸福です、親愛なるコンピュータ。
- 838 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:51:51 ]
- c++で
for(int n=0;n<1;n++) func(); for(n=0;n<1;n++) func(); みたいなfor()の括弧内での変数の宣言のスコープって括弧内とそのforループ内に限定されますよね。 これって昔のバージョンだとforのブロック内でも有効だったりしました?(下のforでも有効だった?)
- 839 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 18:09:24 ]
- >>838
C++ の仕様決定以前に先走り実装されたコンパイラはそうなってたりする。 MS VC++ 6.0 とか。
- 840 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 18:13:03 ]
- C++でC#同様にインテリセンスを働かせる方法ってないですか?
いちいちALT→押すのが面倒です。
- 841 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 19:44:33 ]
- 何を使ってるかわからんもん
- 842 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 20:20:19 ]
- プリコンパイル済みヘッダを複数指定することは出来ますか?
- 843 名前:デフォルトの名無しさん [2008/07/16(水) 15:14:24 ]
- #ifdef XXX
#endif で囲まれた部分がコンパイルされたかをコンパイル時に簡単に知る方法を教えてください
- 844 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 15:15:06 ]
- >>843
#ifdefと#endifの間に#errorと書く
- 845 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 15:23:22 ]
- >>843
XXX_defined とか XXX_undefined ってグローバル変数を定義しておいて オブジェクの中に該当シンボルが存在するか否かを調べる もしくは コンパイラにアセンブラソース吐かして眺めてみる もしくは 出来上がったオブジェクトファイルの逆アセンブルリストを眺める
- 846 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 15:24:08 ]
- >>845 すまんコンパイル時っての見てなかった。忘れてくれ
- 847 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 07:56:37 ]
- #errorだとそこでコンパイルが終了してしまうかも。
実害のない警告が出るようにしておけばいい。たとえば #ifdef XXX #define XXX_DEFINED 0 #define XXX_DEFINED 1 ... #endif
- 848 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 08:45:39 ]
- うわー、意味ねーw
- 849 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:42:29 ]
- std::tr1::unordered_mapを使わないといけないんですが現在の環境(gcc3)には入っていません。
これはどのライブラリに入っていますか?
- 850 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:49:10 ]
- >>849
STLport かな?
- 851 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 17:27:51 ]
- >>850
STLportにありました。ありがとうございます。
- 852 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 17:30:06 ]
- >>849
std::map じゃなくて unordered_map を「使わないといけない」状況って、どんなの?
- 853 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 17:47:57 ]
- >>852
ビルドしようとしたソフトがunordered_mapを使っていたからですよ。
- 854 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 18:42:45 ]
- vc++のデバッグの仕方が分からないんだけど
c#のconsole.writelineみたいにvcのデバッガに出力する方法ってないの? outputdebugstring()とかやっても出てこないんだけど。
- 855 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:52:35 ]
- >>854
出てるよ、見てるとこが違うだけだ
- 856 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 08:24:23 ]
- >>854
MFCを使ってるならTRACEマクロ ATLを使ってるならATLTRACEマクロ WIN32APIだけならOutputDebugStringをじかに使う。 C++・CLIならC#と同じのが使える。
|

|