1 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 21:36:23 ] エスケープシーケンスやWin32APIなどの環境依存な物でもOK。 ただしその場合、質問者は必ず、環境を書きましょう。 ※sageは禁止です。 【前スレ】 【初心者歓迎】C/C++室 Ver.34【環境依存OK】 pc10.2ch.net/test/read.cgi/tech/1169039760/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
596 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:51:26 ] >>588 そうは言っても元のコードが iostream 使ってるんだから そこから調べたらいくらでも情報が出てくるはずだろ。 模範解答らしい >580 にはキーワードを足す必要があるものは 一個も無いし。その後の流れを見ても質問者がとんでもなく アホだったとしか考えられない。
597 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:53:25 ] >>596 じゃ、そのiostream使ってるんだから、のくだりを書いてやれよ 自分が初心者だった頃は泣きついてたくせに
598 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:55:27 ] >>596 そのいくらでも情報が出てくるから困るんだろが 電話帳渡されて583-1723見つけろって言われて見つけられるかおまえ? お前が言ってるのはそういうこと
599 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:56:36 ] iostreamってテンプレート使ってるから初心者には少々取っつきづらい まぁいきなり全部理解しようとせずに少しずつ順番に使うようにすると 勝手に手が動くようになってるけど
600 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:57:16 ] >>597 「くだり」って、「〜調べたらいくらでも情報が出てくるはずだろ」って書けばよかったのか? 言ってることは >577 と同じなんだが。
601 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:58:59 ] >>598 電話帳は番号で検索できないが Web はキーワードで検索できる。全然違うな。
602 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:59:10 ] 途中参加です。 本のコピペでプログラムを作ろうとしているのか。 俺はiostreamに詳しくないのだ。 質問者が何処まで知っていて何を知らないのか判らないから 回答が難しいよね。 まだ5時間しかやってないのか。 これにこりずに続けろよ。
603 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:01:30 ] こんなところでもいじめやってんだから日本のいじめは根深いね
604 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:02:32 ] ま、いじめた側はどうせいつか同じ目に遭うよ ほっとけ
605 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:04:13 ] これは本当にひどい
606 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:05:37 ] もっとふざけた奴なら釣ってもいいだろうけどあんなマジメなのはやめとけよ
607 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:06:43 ] 俺からも>>586 が氏ぬように呪っとくわ
608 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:07:31 ] 560 から 580 が導き出せないのは異常。
609 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:34:42 ] 読ませてもらった 俺からは>>586 は無事なんだが >>586 の子供がいじめられて自殺するように呪っとくわ それくらい悪質だな
610 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:57:19 ] 586は少なくとも2chの中ではごく普通のことだと思うが
611 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 15:12:51 ] 俺一応真面目に答えた側なんだけど。 なんつーか、行き詰まっているのに妙に自信過剰というか、 変な意地が見え隠れするのが気になった。 真面目なのは確かなんだろうけど、それは必ずしも 皆から受け容れられるということを保証してはくれないわけでさ。 自分も相手も匿名のこの場でこういう経験しておけたのは 長い目で見ればプラスなんじゃないのかなぁと思ってみたり。
612 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 15:20:01 ] 根拠のないプライド持った能無しほど困った存在もないからな。
613 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 15:40:57 ] たまたま俺みたいなやさしい人がいなかったときに書き込んだのが 運が悪かっただけだよ。 2ちゃんねるが@IT会議室みたいにはなって欲しくない。
614 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 16:14:05 ] つーか、そもそも>547の原文の下の訳が滅茶苦茶なわけで。
615 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 16:30:08 ] ん?そうか?どこが?
616 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 16:46:26 ] つーかお前らよくこんな下らないことでスレ引っ張るな。 そんなに暇なのか? >>547 なら、こんなもんでいいだろ。 #include <iostream> int main() { int i, c; char charArray[51]; std::streambuf *sb = std::cin.rdbuf(); if ((c = sb->sbumpc()) != '"') return 1; for (i = 0; i < 50 && (c = sb->sbumpc()) >= 0 && c != '"'; ) charArray[i++] = static_cast<char>(c); charArray[i++] = '\n'; std::cout.rdbuf()->sputn(charArray, i); return 0; }
617 名前:デフォルトの名無しさん [2007/03/17(土) 16:54:16 ] >>603 からの自作自演が酷すぎてワロタ C初心者は歓迎だがネット初心者や2ch初心者は帰れ
618 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:01:26 ] C版 #include <stdio.h> int main() { char charArray[51]; if (scanf("\"%50[^\"]\"", charArray) != 1) return 1; puts(charArray); return 0; }
619 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:17:29 ] >>616 と>>618 見るまで入力テキスト内の"を全て取れって問題だと思ってた 最初と最後にしか出てこないんだな
620 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:19:39 ] >>619 Read a string of the form "characters"
621 名前:デフォルトの名無しさん [2007/03/17(土) 17:54:39 ] 今Linuxで動くアプリケーション(なんて大げさなものでもないですが)を作っています。 一般的なC++におけるDebugビルド用のマクロって何か決まっていますか? _DEBUGってのは Visual C++用みたいですが・・・ 自分で勝手にマクロ決めていいもんなんですかねえ
622 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:56:24 ] アンダースコアで始まらない名前なら何でもおk
623 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:57:32 ] 逆に、assert.hではNDEBUGを利用している。 まぁ無難に、DEBUGで委員ジャマイカ。
624 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 18:21:13 ] >>621 リリースビルド時に NDEBUG 定義するから NDEBUG 定義されてないときがデバッグビルド。
625 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 20:07:57 ] それってただ多くのコンパイラで採用されてるだけ? それとも規格で決まってるの?
626 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 21:00:44 ] 623は規格で定まっている事項。
627 名前:625 mailto:sage [2007/03/17(土) 22:01:11 ] ありがとう! どんな環境でも安心して使えるんだね。
628 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:06:17 ] 規格を守っていないシステムが存在しないという証明はできないから どんな環境でも安心して使えるということにはならん
629 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:18:41 ] そんなときは assert.h を自作すればよし。簡単だよ。
630 名前:デフォルトの名無しさん [2007/03/18(日) 00:25:28 ] Visual Studio2005 C++で 読み込んだり計算したりして出した 正の整数値分の配列を宣言したいのですが 取り方がわからないので教えていただきたいです unsigned int a; char buf[10] = "231"; a = atoi( buf ); こんな感じで a を取っていたとき a の大きさ分だけもった b 配列をつくることってできないでしょうか? /*--------------------- const unsigned int c = 231; int d[c]; -----------------------*/ 気分的に(笑)上の様な感じで int b[a]; と宣言してしまうと 定数式が必要です。 とか サイズが 0 の配列を割り当てまたは宣言しようとしました。 とか 'b' : サイズが不明です。 とか怒られてしまいます・・・
631 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:38:02 ] const unsigned int c = 231; int *d = malloc(c); こんなかんじ?
632 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:42:17 ] C++ って言ってるから new じゃね? int* b = new int[a]; 使い終わったら delete b[];
633 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:43:05 ] delete[] b でしょうがぁぁぁあああ!!!
634 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:44:07 ] ごめんなさい>< boost::shared_ptr しか使ってないからもう忘れました><
635 名前:630 mailto:sage [2007/03/18(日) 00:54:35 ] こんな早くレスもらえるとは! ありがとうございます
636 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:18:40 ] >>634 配列に shared_ptr は使えないんじゃね?
637 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:19:43 ] vectorでいいじゃん。
638 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:22:09 ] >>636 shared_array があるじゃん
639 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 06:54:25 ] >>634 たぶんこんな感じ namespace bll = boost::lambda; boost::shared_ptr<int> hoge(new int[42], bll::bind(bll::delete_array, bll::_1));
640 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 08:00:39 ] 素直にshared_array使えよw
641 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 08:30:55 ] シャーベット・アーリーと読んでしまったorz ネヨ…
642 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 08:32:24 ] 寝る前に、 早くシャーベットを食べるんだ。
643 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:34:06 ] 虫歯に注意
644 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 23:56:17 ] 引数がvectorでも組み込みの配列でも動作する、平均値を返す関数を書くべく、 引数を反復子(ポインタ)にして template<class Ran> double average(const Ran& begin, const Ran& end){ (略) } と定義したのですが、関数呼び出し部分で double av_arr[] = {10, 20, 30, 10}; size_t av_arr_size = sizeof(av_arr) / sizeof(*av_arr); double x = average(av_arr, av_arr + av_arr_size); としたところ、 「テンプレート のパラメータ 'Ran' があいまいです。 'double *' の可能性があります。または 'double [4]'」 とコンパイラ(VC2005)にダメ出しされてしまいます。 average(av_arr + 0, av_arr + av_arr_size); とすれば共にポインタとして認識してくれるようですが、 読んだ本には、「配列の名前を添え字なしで使うと配列の先頭のポインタが渡される」と書いていたので、 元のままだと何が悪いのかよくわかりません。 "double [4]"って何の型?? みたいな話もあるんですが、 解説とスマートな解決策をご教授願えれば幸いです。
645 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:04:28 ] >>644 double av_arr[4]; 確かに av_arr と &av_arr[0] は、 同じ値になるけど 型としては別のものだよ。 ちょっとややこしいね。
646 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:07:06 ] >>644 template<class Ran> double average(Ran begin, Ran end); エラーメッセージによると、 double average<double*>(double* const& begin, double* const& end); double average<double [4]>(double const (&begin)[4], double const (&end)[4]); のどちらか決めかねるようだけど、1つめの引数がどっちでも マッチしてしまうからエラーになるんだと思う。 テンプレート引数の推測時には配列はまだ配列のまま。 読んだ本は C の本か、 C++ でも入門書あたりだろう。
647 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:10:12 ] >>644 double av_arr[] = {10, 20, 30, 10}; において、av_arrは、'double [4]'という型ですよ。 もしav_arrが'double *'という型だと size_t av_arr_size = sizeof(av_arr) / sizeof(*av_arr); は、sizeof(double *) / sizeof(double); になっちゃうよ。
648 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:31:57 ] >>645-647 さん ご丁寧な解説、痛み入ります。 おかげさまで、理解に至りました。ありがとうございます。 お察しの通り、読んでいるのはC++の入門書ですね、はい。 精進いたします。
649 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 01:13:27 ] vc8で、スタック上に複数のオブジェクトを作ったとき デストラクタは作った順とは逆の順番で呼び出されるようですが これに依存するような、オブジェクト間の依存関係を作ったりしてもOKなんでしょうか?
650 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 12:20:29 ] 構築した逆順で解体されるのは規格で保証されて滝ガス。
651 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 12:22:51 ] うん。OK
652 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:19:45 ] 違う順番で解放されたらスタックじゃないしな
653 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:25:42 ] >>652 そういう意味じゃないだろー。
654 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:57:37 ] スタックだからこそじゃないんですか?
655 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:01:17 ] 実行順を保証しないと困る事があるからだ。 依存し合ってる場合とか。 そもそも、自動変数がスタックで実装されるかどうかなんて 規格で決まってないっしょ?
656 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:15:12 ] 入門書に載っていたサンプルコードをそのまま写してコンパイルしてみたのですが、 kouza.hの6行目で「宣言の構文エラー」と表示されます。 1ファイルにまとめれば正常にコンパイルされるのですが、どういった問題があるのでしょうか? ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3759.zip ソースはこれです。
657 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:48:30 ] >>649 でスタック上って言ってるからスタック前提の話かと思いました
658 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:51:13 ] >>656 kouza.cppとmain.cpp両方で、多重対策してないkouza.hをインクルードしてるせいで多重定義になってるだけじゃないの?
659 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:58:24 ] >>648 オブジェクトA・B・CとプッシュされたものはC・B・Aと取り出される プログラムの関数もスタックを使って実装されてる
660 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 23:42:22 ] ソースファイル上で関数宣言の後などに LFが挿入されているのをよく見掛けるんですが これってどういう意味があるんですか? void hoge(int piyo) { } ^L みたいな感じ
661 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 23:44:44 ] そんなの見た事ない。 文字コードの違う環境でいじったんじゃね?
662 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:22:40 ] >>660 LF(^J)なら必ず入るだろ、改行コードだから。 FF(^L)なら改ページコードとして入れるという習慣が一部にあるらしい。 プリンタに出力したときに関数単位で出力されることを期待しているのだろう。
663 名前:656 mailto:sage [2007/03/20(火) 00:33:27 ] >>658 kouza.cppの中身(「#include"kouza.h」以外")をkouza.hに移して試してみたのですが、 依然エラーは消えないままです。 main.cppの方に移しても同様なので、原因は別のところにありそうです。
664 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:42:40 ] 具体的にはどのようにコンパイルしているんだ?
665 名前:656 mailto:sage [2007/03/20(火) 02:05:14 ] >>664 Cpadでコンパイル時パラメータの欄に main.cpp kouza.cpp kouza.h と入力した状態でコンパイルしています。
666 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 03:16:34 ] >>665 Cpadは使った事無いけど、ヘッダーファイル(kouza.h)も指定しないといけないの? Visual C++ 2005EEとg++ 4.1.2で普通にコンパイル通ったよ。
667 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 06:37:45 ] >>656 CPadってBorlandC++Compilerだけだっけ? ↑なら bcc32 main.cpp kouza.cpp で正常にコンパイルできたけど
668 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 06:50:51 ] パラメータの入力順が違うだけだったりな kouza.h kouza.cpp main.cpp とか
669 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 07:16:51 ] ヘッダをC言語としてコンパイルしているので、classでエラーが出るという落ちでは
670 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 07:25:43 ] >>663 そんなことしても多重対策にはならんわいw
671 名前:656 mailto:sage [2007/03/20(火) 15:43:42 ] みなさん回答ありがとうございます。無事に解決することができました。 >>666 kouza.hを外したらコンパイルが通りました。 以前にヘッダも指定した時はたまたま上手くいったので、 それが正しいと思い込んでしまっていました。 >>670 kouza.cppの中身を移してkouza.hとmain.cppだけをコンパイルすれば 対策ではなく、そもそも多重定義が起こらないと思ったのですが・・・ 何か自分が勘違いしてるかもしれません。申し訳ないです。
672 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 16:02:45 ] >>662 ^LはFFなんだね.首でも吊ってくるよ 勉強になった dクス
673 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 23:31:41 ] >>650-651 久しぶりに職場にお泊りしてしまった 遅くなったけど、ありがとう
674 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 15:21:56 ] windowsでMSTPサーバを使用して、メール送信してますが outlookで、メール送信することできるでしょうか? APIかコマンドラインから使うことできれば、便利なんですが。 よろしくお願いします。
675 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 15:24:56 ] Outlook Expressのことなら知らない。 OfficeのOutlookなら、VBAでできるかやってみろ。 それでできたらC++でもできる。
676 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:26:27 ] >>675 レス感謝です。 検索して、しらべてみます。
677 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:05:11 ] >>674 メーラーを外部から操作するためのMAPIというAPIがあり、Outlookは 対応しているが、ある時点で(XPのSP2だったかな?)、セキュリティ絡みで 非常に強い制限が課せられるようになったはず。 送信が許可されてたかどうか。
678 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:20:23 ] 済みません、int から byteヘとか そのまた逆にする場合はどうしたらいいでしょうか? ググッたんですがJavaやC#は見つかったんですけれども C++が見つからなくて 初心者の質問で済みません
679 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:22:50 ] CやC++にはbyteなどという型は存在しないのでintからbyteにする方法などはありません
680 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:27:08 ] あっそうなんですか そうすると今使ってる byteはwinやTurbo C++の環境なのかな...orz もうちょっと調べてみます
681 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:33:12 ] typedefでしょ? castすればいい。もちろんcastの動作を理解した上でやってね。
682 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:42:53 ] byteとcharって、どの程度違うの?
683 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:43:22 ] 有り難う御座います、castの知識曖昧な所が多いので 勉強しながらやってみます
684 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 18:02:02 ] >>682 charはコンパイラによって符号ありだったりなしだったりするが BYTEは大抵は符号なしcharのtypedef byteはシラネ
685 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 18:47:47 ] >>678 static_cast おそらくbyte→intのように、扱える範囲が広くなるほうへは使わなくても平気。 Cとの互換を保つため実は狭くなる方へもキャスト無しで行けるが、キャスト使っておけ。 エラーにできないもんだから、みんな警告を出す。
686 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 19:20:44 ] 有り難う御座います やってみます
687 名前:デフォルトの名無しさん [2007/03/23(金) 05:44:57 ] 質問です。 tableと言う配列があったとして ループ部分で、前の値を計算式に含める場合。スマートな方法は無いのでしょうか? 具体的には int table[128],res[128]; for(int i=0; i<128; i++){ res[i]=table[i-1]*5; } こういった式の事です。 このままでは、1回目のi=0の時に負の値が添え字に与えられてしまいます。 int i=1だと、res[i-1]としなければならず、なんとも気持ちが悪いものです。 一般的にはこのようなループはどのように対処するものなのでしょうか?イディオム的なものはあるのでしょうか?
688 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 05:51:26 ] >>687 res[0]には何入れるの?
689 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 06:19:26 ] >>687 int * dest = &res[0] ; int * src = table[-1] ; for ( ; dest != &res[128] ; ++dest, ++src ) { *dest = *src * 5 ; } あるいは、 std::copy( &table[-1], &table[127], &res[0] ) ; >>688 悪魔が入ります。
690 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 07:31:31 ] >>689 > int * src = table[-1]; おまえ正気かいな
691 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 07:37:29 ] >>689 それ何の解決にもなってないだろ
692 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 08:28:34 ] >>687 >res[i-1] 結局行き着くのはここ それで気持ちが悪いとか言ってたらC/C++なんてやってらんねぇよ >>689 そんなにアクセス違反とか領域破壊とかしたいのかおまいはw
693 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 13:44:09 ] 添え字に飽和減算マクロを使えばおk
694 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 17:51:14 ] >>687 res[i-1] はコンパイラによって (res-1)[i] みたいに なることが多いので気持悪く思う必要はない。最初から (res-1)[i] とも書けるけどこれは規約違反。
695 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 19:41:22 ] >>694 強い電波をキャッチしました。
696 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 20:06:10 ] >>694 (res-1)[i] <-> *(res-1+i) <-> res[i-1] resがポインタ型なら常にこれらは等価。 規格にもなんら違反していない。
697 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 20:19:32 ] 694自身もしくは694の職場でのコーディング規約なのでは?
698 名前:デフォルトの名無しさん mailto:age [2007/03/23(金) 20:30:38 ] ついでに言うと(-1+i)[res]でも同じだな。キモ過ぎるなこれ。 >>694 はポインタ同士の演算(減算を除く)が不正であることと 混同してるんじゃないか?
699 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 21:41:50 ] >>687 for( int i=1; i<128; i++){ res[ i - 1 ]=table[ i ]*5; } じゃダメなの?
700 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 21:57:26 ] それ意味変わってね?
701 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:03:48 ] >>698 さすがにそんなコードは書かないけど、 C言語におけるポインタとはどういうものかを知るには 素晴らしい例だと思う
702 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:09:57 ] >(-1+i)[res] の解説キボンウ
703 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:13:46 ] 例えば res[i-1] ってのは (resが指し示すアドレス)と(添え字=この場合ならi-1) との単なる加算を行い、そのアドレスが保持している値を返す。 数字が前に来ようが後に来ようが両方に来ようが 加算の結果は変わらないので指し示すアドレスも変わらず、 よって問題は起こらないと
704 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:14:01 ] >>702 解説面倒だからポインタがなんであるかの勉強してこい
705 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:15:49 ] >>702 a, bの片方がポインタ型で他方が整数型である場合、a[b] は *(a+b) に等しい。
706 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:18:12 ] >>702 (-1 + i)[res] ⇔ *(-1 + i + res) ⇔ *(res + -1 + i) ⇔ res[-1 + i] ⇔ res[i - 1] これ書いていて思い出した。CもC++も規格では 配列の先頭要素〜最後の要素を1つ越えたところの範囲外を指すポインタの存在すると プログラムの挙動が未定義になる。694が規約違反と言っているのはこのことだ。 www.kouno.jp/home/c_faq/c6.html#17
707 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:19:56 ] 目からぬるぽでした 解説あんがとさんでした
708 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:55:03 ] 無料でC++使える環境は?.NET使えなくていいから
709 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:56:42 ] cygwin, mingw gcc
710 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 23:01:17 ] >>708 VC++EE
711 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 23:01:44 ] >>706 なるほど。C FAQをもう一度読み直すとするか…。
712 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 01:23:19 ] >>707 目にガッしていいの? 目にガッって、やっていいの? BCC
713 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 01:24:49 ] >>706 どうでもいいけど日本語がおかしい。
714 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 01:41:55 ] デバッグ出力なんかだと、時折り"NULLPO"[ga]なんてのも使うよね。 #流石にga["NULLPO"]とはしないけど。
715 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 01:48:48 ] 俺はテストデータに"いろはにほへとちりぬるぽ"とか使う。 最初は反応してくれる人が居たけど、最近は誰も反応してくれなくなった。 いいかげん、次のネタを考えんといかん。
716 名前:デフォルトの名無しさん [2007/03/24(土) 02:17:01 ] 分割コンパイルをやってて、 コンパイルすると「外部シンボル”○○(自分で定義した関数)”が未解決です」 ってでるんですが、俺はどうしたらいいですか?
717 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 02:18:23 ] >>716 コンパイラエンジンの使い方を勉強すればいいと思います。
718 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 02:27:23 ] >>716 コンパイルだけじゃなくてリンクまでやっちゃってるから。 それはリンカが出してるエラーメッセージ。
719 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 03:13:58 ] 変数の命名に関して質問です。 メンバ変数の末尾に"_"をつけているソースをよく見ますが、 これはシステムが利用している変数名とは被らないのでしょうか? 自分で調べたところ、_xや__xや_x_はダメだという記述は 見られましたが、x_に関しての記述はなかったもので。
720 名前:716 [2007/03/24(土) 03:20:22 ] >>717-718 こんな質問に答えてくれてありがとうです。 このエラーを解決するにはどうすればいいですか? 一通りググってみたけど、いまいち理解出来ませんでした。 質問ばかりですいません。
721 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 03:26:47 ] >>719 末尾なら良いんでないでしょうか。 俺はアンダースコア(アンダーバー)で終わる変数名は つけないけど。
722 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 03:29:57 ] >>719 末尾についてるのは大丈夫。ただし C++ では末尾でも(途中も含めて)二重なのはダメ。
723 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 03:31:20 ] >>720 ○○が定義されているオブジェクトファイルもリンカに渡せ。
724 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 03:33:17 ] >>720 まず、お前自身が自分がなにをやってるのか正確に理解する必要がある。 フツーのコンパイルなら一度に全てのソースをコンパイルしリンクを行う。 分割コンパイルの場合は一部のソースのコンパイルだけ行う。 リンクは全てのソースのコンパイルが完了している任意のタイミングで行う。 で、お前の今の状況だが、大きく二つのケースに分かれると思う。 ひとつはコンパイルだけ行えばいいタイミングでリンクまでやっている。 ( 通常、コンパイラは"コンパイルのみを行う"という指示がない場合、勝手にリンクまでやっちゃう。 ) もうひとつはリンク時に必要な( ソースファイルをコンパイルして生成される )オブジェクトファイルが 全部そろってない、あるいはオブジェクトファイル自体はあるが、リンカに渡っていない。
725 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 03:36:07 ] >>720 ヘッダで関数宣言だけしてあるけど、 中身の定義が見つからんてことだよ
726 名前:716 [2007/03/24(土) 03:59:33 ] どうやら自分は何がしたいのかが理解できてないようです。 取り敢えずもう少し勉強してみます。 こんな時間におさがわせしました
727 名前:デフォルトの名無しさん [2007/03/24(土) 04:01:15 ] まあそう言わずに思いのたけをぶつけてくれたまえ。
728 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 04:15:14 ] >>726 具体的にどんな環境でどんなふうにコンパイルしてるのか、詳しく教えてくれれば 多分、ちょっとしたことでうまくいく問題だぞ。
729 名前:429 mailto:sage [2007/03/24(土) 04:17:10 ] >>430-444 ありがとうございます。 質問してたの忘れてた(汗 遅レススマムコ
730 名前:デフォルトの名無しさん [2007/03/24(土) 04:22:44 ] #define って そのソースファイル内でしか適用されんの? また同じ #define をソ−スごとに書かないと駄目なの?
731 名前:デフォルトの名無しさん [2007/03/24(土) 04:27:33 ] >>730 プリプロセッサだもの、そりゃそうでしょ。 いっぱい書きたくなかったらヘッダに書けばおk。
732 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 04:28:34 ] 同じ #define を複数箇所に書くとかあまりにも意味がないw
733 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 04:32:25 ] >>730 コンパイルオプションで指定するならソース上のどこにも書かなくていいよ。
734 名前:デフォルトの名無しさん [2007/03/24(土) 04:34:19 ] >>731 ヘッダに書いてインクルードさせれば使えるの?
735 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 05:04:18 ] #includeは単なるファイルのコピペ指令だ 気張る必要はないよ
736 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 09:37:31 ] >>732 それそのまんまマイクロソフトに言ってやれ
737 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 10:03:11 ] 一応VC++でのコマンドラインからのコンパイルとリンクの仕方を msdnから抜粋しといた。必要ないから、俺は使ったこと無いけど コマンド ラインで、オブジェクト ファイル FIRST.obj と SECOND.obj が作成される。 CL /c FIRST.C SECOND.C 実行可能ファイルを作成するには、LINK を呼び出す必要があります。 LINK firsti.obj second.obj /OUT:filename.exe
738 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 11:19:57 ] WinXP、MinGW-5.1.3を使ってます。 10E13位の実数を扱いたいんですが、float型やdouble型で宣言しても warning: integer constant is too large for "long" type というエラーが出てしまいます。どうすれば解決できるでしょうか。
739 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 11:22:20 ] コード書け
740 名前:738 mailto:sage [2007/03/24(土) 11:27:25 ] これだけなんですが。 float na; long nb; na = 100000000000; nb = 1000000000;
741 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 11:29:05 ] double f[] = {100000000000000., 10e+13};
742 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 11:30:28 ] >>740 それはlongリテラルだもん
743 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 11:33:42 ] >>740 小数点でも書いとけばいいんじゃないの
744 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 11:34:11 ] エラーメッセージのまんまだな。 longリテラルではなく浮動小数点リテラルとして認識させればいいだけ。
745 名前:738 mailto:sage [2007/03/24(土) 11:36:04 ] 宣言はできましたが、数値を代入したら同じエラーが出てしまいました。 代入するには f[0] = 100000000000; でいいんですか?
746 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 11:36:32 ] >>740 na = 100000000000.0f; つーか10E13ってそういうことか てっきり0x10E13かと思ってたわ
747 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 11:40:24 ] >>745 だからdoubleリテラルにするために小数点かeつけろよ
748 名前:738 mailto:sage [2007/03/24(土) 11:48:23 ] 代入する数値に.を付けて f = 100000000000.; としたら解決しました。ありがとうございます。
749 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 11:55:31 ] >>737 -cオプション与えなければclでexeを直接生成できるよ。 cl -o foo.exe first.c second.c でよい。 ま、普通は(Makefileを使うような場合は)-cオプションつきでobjを 作った後で結合するけどな。
750 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 12:18:51 ] C++版のgetch()ってありますか?
751 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 12:25:29 ] ない。そもそもgetchは標準関数ではないのだからC++がどうこう言う話ではないだろ まあ、conio.hがある環境なら#includeしとけば使えると思うよ
752 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 12:34:29 ] 標準じゃなかったんですね・・・ 回答ありがとうございました
753 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 17:36:07 ] #include <windows.h> #include <iostream> BYTE A(const BYTE* a) { return a[0]; } BYTE A(const PBYTE a) { return a[1]; } int main() { const BYTE a[] = { '0', '1', '2', '\0', }; /* */ BYTE b[] = { '0', '1', '2', '\0', }; std::cout << A(a) << A(b) << std::endl; return 0; } このコードは 01 と表示するんですが、aとbが区別される理屈がわかりません また、Aの定義からconstを取り除いた場合、同じBYTE*の関数としてあつかわれて コンパイルエラーになるのに、constがあるとOKなのも理解できません なぜこうなるんでしょうか?
754 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 17:48:28 ] const PBYTEはBYTE* constになる。 const BYTE* aはaの指す先がconstという意味。 BYTE* const aはaそのものがconstという意味。 それぞれ別の型として扱われるので多重定義できる。 仮引数そのものがconstかどうかは多重定義の解決の際に考慮されないので、 実質的にはA(const BYTE* a)とA(BYTE* a)の中からどちらのAを呼ぶかということになる。 main関数の中のAの呼出では、それぞれaとbの型に引数が最も合うAが選ばれたということ。
755 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 17:54:04 ] constなポインタとconstなオブジェクトを指すポインタの違いはこんな感じ int i; const int c; int *const pc; const int* cp; pc = &i; //エラー:pcはconstだから cp = &c; //Ok *pc = 0; //Ok *cp = 0; //エラー:cpの指す先はconstだから
756 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 17:57:58 ] >>754-755 うぉぉ すごく良くわかりました > const PBYTEはBYTE* constになる。 これに気づけなかった。感激です あとドルジっょぃ
757 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 18:15:44 ] ポインタが絡んだときに、constがどこにつくかってのは、定期的に出るね。 cont BYTE * だから分かりにくいのであって BYTE const * //上の型はこれ BYTE * const BYTE const * const そもそもなんで、型の前にも後ろにも付けられるようにしたんだか。 後ろだけだったら、こんなに混乱しなかったはずなのに。
758 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 18:22:36 ] >>757 C++の言語仕様は何でもあり これがすべての混乱の元と言われている
759 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 18:30:57 ] 結局C/C++は女子供の使うものじゃなかったんだよ。 スキルのもった、何でも自分で出来る現場のおっさんが、好きなように出来るように作られたもの それが出来ないなら、制限されたC♯で"安全な"プログラムを組めって事さ
760 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 18:35:28 ] >>757 www.research.att.com/~bs/bs_faq2.html#constplacement
761 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 18:40:16 ] >>758 これはC++だけではなく、基のCからそうだった。
762 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 18:50:53 ] const BYTE *A だったら (const BYTE)←Aって感じでポインタのAがconst BYTEを指してますよーっ て感じで直感的かもしれない気がしただけでしたごめんなしあ
763 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 18:51:13 ] C++はオブジェクト指向が追加されて更に言語仕様が複雑になった CはポインタとGOTOを制限すれば構造化プログラミングを 正常に行える。 オブジェクト指向言語でありながらポインタがある。この言語仕様で 自由にプログラマーがコーディングする他人が読めないコードに なるのはむしろ必然
764 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 19:14:33 ] GOTOなんて気持ち悪すぎ
765 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:11:17 ] >>763 初心者丸出しの発言乙w
766 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:23:51 ] 玄人がするような発言をして下さい↓
767 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:25:49 ] gotoにも使いどころはあるよ
768 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:28:47 ] プログラミング規約を行わないでコーディングさせたら プログラムを複雑にするのは事実 フレームワークを言語に取り入れるのは大規模開発では常識となっている。 世界で活躍するプログラマになると実行速度・コードサイズ・可読性に優れた コーディングを行っている。 他人が読めないコードは最悪のコーディングスタイルだ
769 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:33:57 ] 実行速度やコードサイズを犠牲にして可読性上げてるんじゃなかったっけ・・・
770 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:38:53 ] エセ玄人がするような発言をして下さい↓
771 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:40:33 ] 実行速度・コードサイズは最適なアルゴリズムを採用することにより実現 可読性はクラス設計を適切に行い、関数の粒度を均一にすることで実現 更に優秀なプログラマなら再利用可能なプログラム設計も行える。
772 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:05:56 ] ごめんなさい どれも出来ません。
773 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:06:22 ] ・最適な ・適切に ・関数の粒度を均一にすること ・優秀なプログラマ
774 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:09:56 ] goto 使わずにどうやって for の二重ループから脱出するの?
775 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:11:01 ] フラグ立てんじゃね? まあ俺はgoto使っちまうがな
776 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:11:45 ] 日本ブレイク工業社歌ばりにブレイクブレイク。
777 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:16:07 ] 最初は素直な実装を心がけてればいいんじゃないかな
778 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:25:07 ] 2重ループを関数に移してreturnするな俺は
779 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:38:25 ] で、goto 使うななんて発言はどこにも見当たらないんだが…
780 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:44:06 ] ばっかだなぁ throwがあるじゃないか
781 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 23:45:14 ] 例外ってgotoよりタチが悪いだろ
782 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 00:58:07 ] gotoを全く使ってはいけないのではなく、多用すると可読性が悪くなるから制限が必要 多重ループからの離脱はgoto使うとむしろ可読性が良くなるから使うべきケース
783 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 01:23:56 ] try throw catchってやばいのん?
784 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 01:27:33 ] >>783 もちろん、ちょーやばい。宇宙並みにヤバイ。お前は絶対使うなよ! やばいから! ・・・俺は使うけど。
785 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 02:04:48 ] 例外は"見えないgoto"だとはよくいったものだ。 悪用すると、gotoよりも可読性が悪くなる。 使わなくて済むのなら避けるべき。
786 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 02:44:48 ] どの言語でも例外を非ローカル脱出に使うのは推奨されていないなあ…
787 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 10:25:08 ] 例外って、使う使わないというものじゃなくて 「使わざるを得ない」ものではなかろうか
788 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 12:41:01 ] うるさいうるさいうるさい!
789 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 16:35:02 ] 質問失礼します。 とある関数で、time(NULL)を種として乱数を発生させているのですが、 高速で繰り返し関数を呼び出しているため、同じ乱数が何度も発生してしまいます。 速度を落とさずこれを回避するには、どうすればよいでしょうか?
790 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 16:36:12 ] 種を与えるのは一回だけでいい
791 名前:デフォルトの名無しさん [2007/03/25(日) 18:43:58 ] 循環参照とか循環インクルードとか、 このヘッダインクルードしたらこのヘッダもついてくるから 新しくヘッダつくるかそしたらこのヘッダインクルードしないといけないから そしたらこのヘッダもついてくるからって もう嫌になった
792 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 18:46:20 ] インクルードガードしろ
793 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 19:53:17 ] 分割コンパイルするならインクルードガード必須だろ、常識的に考えて
794 名前:デフォルトの名無しさん [2007/03/25(日) 20:00:55 ] インクルードガードは本当は良くないんじゃないんですかね。 それはただの対処法ってだけじゃないの?
795 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:04:53 ] やっぱ#pragma onceで重複処理するだけって駄目なのか・・・
796 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:09:15 ] >>794 ただの対処法がダメならどうしろとw >>795 そいつぁコンパイラを選ぶんじゃなかったか
797 名前:デフォルトの名無しさん [2007/03/25(日) 20:14:56 ] >>796 基本的に循環しないように分割の設計していかないと駄目だと思うのよね。 それが基本的に本当だと思うのよね。 ヘッダ1000個とかになって人間として難しいって時の対処法でインクルードガードがあるんだと思うんだよね。
798 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:32:57 ] それはつまり、NULLが定義されているのがstddef.hのみだった場合 stdio.hやstdlib.h内でstddef.hをincludeするのは禁止で、かつ ユーザーはstdio.hとstdlib.hの両方を使用するコードを書くべきではない ということですよね?
799 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:46:45 ] 標準ライブラリは重複してもおkなの?
800 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:48:24 ] 何をもっておkとしたいのか判らん オブジェクトコードを1バイトでも軽くしたいとかコンパイルを1秒でも早く終わらせたいとか そんな目標があるのか?
801 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:51:50 ] つまり発生する問題はその程度ということですか、ならおkです
802 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:00:31 ] >>797 >基本的に循環しないように分割の設計していかないと駄目だと思うのよね。 >それが基本的に本当だと思うのよね。 んなこたねーよ馬鹿。循環していなくても 同じ宣言・定義を2回読む危険性はあるだろ。 >>799 標準ライブラリもインクルードガードされているから大丈夫。ソース見れ。 >>800 #include <stdio.h>と何回も書くと その分だけオブジェクトコードが増えるとでも思ってるのか? 時間は数ミリくらいは遅くなるだろうが。
803 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:11:19 ] >>802 >>799 は>>797 理論について標準ライブラリも重複しないようにせにゃならんのかと言ってんじゃね?
804 名前:デフォルトの名無しさん [2007/03/25(日) 23:18:38 ] >>798->>803 バカかお前ら。依存関係の事言ってんだよ
805 名前:デフォルトの名無しさん [2007/03/25(日) 23:24:59 ] >>804 ごめん、よくわからん
806 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 23:25:03 ] 結局これか www.kouno.jp/home/c_faq/c10.html#7
807 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 23:28:37 ] >>804 無能
808 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 23:34:21 ] >>806 に関連して(このスレの流れには関係ないが) borlandのコンパイラ及びmakeは、自動的に依存ファイルの更新をチェックする機能がある (.objのコメントにincludeされたファイルと日付を含め、makeがそれをチェックする) まあmakeにかかる時間が若干増えるが。
809 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 00:24:06 ] >>806 Indian Hill スタイルガイドを策定したヤツは馬鹿ですか? 信じられん。 一度、#include を入れ子にしてないプログラムのメンテしたことあるけど地獄だったぞ。
810 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 02:43:27 ] 例えばクラスAを保持しているクラスBとCがあって、それぞれが別々の .cpp と .h のセットに記述されていた場合とか、 入れ子 #include が禁止だと非常に困る
811 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 05:27:27 ] >789 どういう状況かは知らないが、似たような経験がある。 とあるアプリのプラグインを開発していたんだけど、 アプリの仕様上、その機能が使われる度に毎回プラグインがロードされるので static変数が使いにくいという状況だった。 そのときに色々と調べて見つかった方法が、 ・シードをファイル等に書き込んでおく ・プラグインとは別にプロセスを立ち上げ、種を保持しておく ・ミリ秒ではなくマイクロ秒を種に与える の3つだった。他にもあるかもしれない。
812 名前:デフォルトの名無しさん [2007/03/26(月) 16:52:23 ] Win32APIフックについて教えてください。 ユニットテストでAPI呼出失敗を検証する為、 APIフックを行う必要があります。 いろいろ調べた結果、以下のHPにサンプルがありました。 ttp://ruffnex.oc.to/kenji/text/api_hook/ ttp://ruffnex.oc.to/kenji/text/api_hook/ex2.cpp 動作検証した所、フックは成功しました。 しかし、フック状態から元の状態に戻す方法がわかりませんでした。 (プログラムを終了すれば元の状態にもどりますが、そうではなく、任意のタイミングで戻したい) どのようなコードを書けばよいのか、識者の方ご教授いただけませんでしょうか。
813 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:57:48 ] そりゃ、自分のプロセスのテーブルを上書きして書き換えてるだけだから。 そこのページに置いてある API_Hook.zip をちゃんと読めば分かるよ。
814 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:03:34 ] ややすれ違い WindowsAPIべったりな話題だから pc11.2ch.net/test/read.cgi/tech/1174416295/l50 さらにいうなら親切にBBS用意してるんだからそっちで聞くほうがいいとおもうけどな さらにいうならもう一個下のサンプルにはちゃんと実装されてるんだから それぐらい調べてからでも遅くないと思うんだけどな でもってReplaceIATEntryInAllModsの引数逆転させてみな
815 名前:812 [2007/03/26(月) 17:40:00 ] >>813 >>814 レスありがとうございます。 ご指摘の通り、ソースを調べてから質問するべきでした。 また、スレ違いであることも、重ねてお詫びします。 申し訳ありませんでした。
816 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 18:34:00 ] Cの質問です。 unsigned int a = 1; a -= 2; このとき、aの値がUINT_MAXになることは保障されているのでしょうか?
817 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 18:42:17 ] UnsignedIntegerOutOfBoundExceptionがシグナれます
818 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 18:52:17 ] >>816 整数オーバーフローが発生した場合の動作は未定義 そもそもUINT_MAX==2^(sizeof unsigned)-1である保証もない
819 名前:816 mailto:sage [2007/03/26(月) 18:58:34 ] >>818 分かりました 別の方法を考えてみることにします・・・ レスありがとうございました!
820 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 19:31:05 ] >>818 あれ、そうだっけ。 intとかの負数を含む型は、 オーバーフローは未定義だったのは規格で書いてあった覚えあるけど。 unsignedも未定義って書いてたっけ? 確か2^Nで余剰を取った結果になるって書いてたと思うけど。
821 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:09:16 ] >>816 規格では、符号なし整数の演算結果が範囲外になったときは範囲内に収まるまで (その型の最大値+1) を足したり引いたりした値になるとされている。 ISO C 6.3.1.3 これにより ((unsigned int)-1) は常に UINT_MAX に等しいと言える。
822 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:19:31 ] UINT_MAX は-1よりも~0の方が好きだな 単なる好みの問題だけど
823 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:21:05 ] オーバーフローはバグの原因になるから理解するのはいいけど、 実際にプログラムに組み込むなよw
824 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:44:31 ] >>822 それって保証されてるん?
825 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:00:58 ] C90/C99ともにただ 0 とだけ書いた場合は (int)0 と等価なので それを全ビット反転するわけだから -1 になると思うが
826 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:01:46 ] 書き漏らした int範囲で -1 になると思う
827 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:02:27 ] 負数の表現方法は C の規格外。
828 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:03:45 ] ~0Uだな
829 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:12:28 ] つまり、-1 が 0x80000001 な環境でも (unsigned)-1 は 0xFFFFFFFF (が UINT_MAX とする)になるということか。
830 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:15:01 ] まぁそういうことだよな? ただの -1 なら 0x80000001 で解釈されるけど (unsigned)キャスト時はコンパイルでUINT_MAXに置換されるってことなんだろうか
831 名前:デフォルトの名無しさん [2007/03/26(月) 23:28:52 ] VC++ 2005を始めました。 Byte単位でのファイル入出力はできますか? ビギナー本には書いてないし、ネットでも色々探したのですが…。 エロい人、方法を教えてくだされ。
832 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 23:34:42 ] fread() fwrite()
833 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 23:36:00 ] fstream