1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:18:18 ] プログラミング言語C/C++についての、小心者向けスレです。質問・要望・雑談などどうぞ。 関連スレやURLは>>2 以降。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・ぐぐる ・マニュアルで探す ・FAQを読む 例えば www.bohyoh.com/CandCPP/FAQ/index.html 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(なるべくそのままで) ・実行環境(OS名、コンパイラ名) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は小心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって小心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。 宗教的な話題は禁止します。
802 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 20:25:14 ] >>801 なんでだよじゃねえだろ。失礼甚だしい
803 名前:801 mailto:sage [2010/01/29(金) 22:04:27 ] >>802 まあ・・・確かに落ちているという表現はあまり良くなかったかもしれんな。 ま、その辺は本人がきっと弁明するということで。
804 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:32:16 ] >>803 お前がその本人だろ・・・ 何しれっと他人の振りしてんだよ
805 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 00:01:15 ] >>804 いや別人だから失敬な。 まあ何だっていいけど。 証明方法がないもんなぁ。
806 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 16:20:48 ] 795です。 ご指摘の通り「落ちている」という表現は悪かったと反省してます。 ただ本当に困っています。どなたか助けてくれる方いましたら 本当にお願いします。
807 名前:805 mailto:sage [2010/01/30(土) 16:26:09 ] >>806 このスレには低能力者しかいないから 別のスレ(ttp://pc12.2ch.net/test/read.cgi/tech/1263556932/とか) に行ってみたらどうでしょうか? > 証明方法 fusianasanがあったか。 でもまあ晒したくないからやめとこう。
808 名前:805 mailto:sage [2010/01/30(土) 18:03:11 ] >>806 言い忘れたが、常識で考えてくれ。 このままだとマルチポストになるぞ。 どっちかでは別スレに行ってきますと断りをいれましょう。
809 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 18:25:36 ] すいませんでした。別スレ行きます
810 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:22:32 ] . ____ _ | (・∀・) | `)) | ̄ ̄ ̄ ̄ ´ ∧ <⌒> /⌒\ _________]皿皿[-∧-∧、 /三三三三三三∧_/\_|,,|「|,,,|「|ミ^!、 __| ̄田 ̄田 / ̄ ̄Π . ∩ |'|「|'''|「|||:ll;| /__,|==/\=ハ, ̄ ̄|「| ̄ ̄ ̄ ̄|「| ̄ ̄| /_| ロ ロ 「 ̄ ̄ ̄ | | 田 |「| 田 田 |「|[[[[| |ll.|ロ ロ,/| l⌒l.l⌒l.| | |「| |「|ミミミミミミ
811 名前:保守 [2010/02/06(土) 11:57:12 ] ttp://exlight.net/devel/cpp/string_initialize.html C++の初期化指定は複雑 C++の初期化は恐ろしく複雑になってて, struct S { int a; static int b; int c; } s = { 1, 3 }; と書いたらs.a = 1,s.c = 3と初期化されるなんてルールも決まっている.あんまり深入りしないでおこう….
812 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 13:12:32 ] 複雑というより落とし穴だらけ、という感じだな
813 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 14:04:51 ] >>811 まあねえ 静的メンバは外で定義しないといけないしね そうしないとコンパイラから叱られる
814 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:21:56 ] だが、スタティックメンバ変数程度で*恐ろしく*複雑ってのは、さすがにどうよ? そりゃCよりは複雑だけど、C++に限らず、いまどきの言語でクラス変数使ったら 同じような状況になるし、少なくともスタティックメンバ変数の初期化ルールは *恐ろしく*なんて形容されるほどじゃないと思うんだが。 ついでに聞きたいんだけど、C++に限らず、みんなが「こいつは複雑だ」と思った 言語仕様ってある? 例えば多重継承とかテンプレートとかは複雑?簡単?
815 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:49:22 ] テンプレートの部分特殊化のルールは複雑だと思う
816 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:50:05 ] あとADLは時々わけがわからなくなる STLが吐く長いエラーメッセージはさすがに慣れたけど
817 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:55:31 ] ヘッダに const 定義しても ODR にならない場合のルールは複雑だ。
818 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:35:00 ] そりゃわかにくく書こうと思えばわかりにくく書けるさ とにかく他人にも,そして自分にもわかりやすく書くだけ 忘れた頃に見ても
819 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:26:30 ] 座標入れようと思ってdouble[3]のvectorを作ったはいいが、push_backしたときにエラー出る。 仕方ないから struct XYZ{ double array[3]; XYZ(){} XYZ(const XYZ&xyz){memcpy(array, xyz.array, sizeof(double)*3);} ~XYZ(){} XYZ &operator[](unsigned int n){ return array[n]; } }; って作ったけど、もっと楽にできなかったのかなぁ?
820 名前:819 mailto:sage [2010/02/10(水) 02:32:51 ] あ、そんなの言うと、普通にvector<vector<double> >使えって言われそうだけど、 大量の要素を入れたかったんで、double配列いっこいっこに、mallocの管理領域使うのがもったいなかったんだ。 あと、vector<double>にしといて、[i][j]を[i*3+j]ってしたり、ループするときにイテレータ3個飛ばしにしてもよかったんだけど、 なんかそこらへんでコードが地味に複雑化するのが嫌だったんだ。
821 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 05:43:20 ] >>819 boost::array<double, 3>
822 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 07:02:33 ] 要素が3つくらいならboost::tupleとか。 配列っぽく扱える必要があるなら使えないが。
823 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 07:26:33 ] boost::arrayがせいかいじゃね?
824 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 10:25:35 ] >>819 POD型の配列にはコピーコンストラクタがないからエラーになるんだろ
825 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 11:09:45 ] >>821 そんなのがあったのですね。トンクス
826 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 07:34:09 ] すみません。Visual C++ 2008 Express Editionで ブレークポイント(行の左に赤丸)を付けてデバッグ開始をした時に ・ちゃんと矢印が出て止まる状況 ・透明な円になり、黄色い△に!が付いて止まらない状況 の2パターンが起きるのは何故なのでしょうか? 以前はちゃんとブレークポイントを入れれば矢印で止まってくれたのですが、 今は止まってくれず、無理に手前のブレークポイントからステップインすると ソースを表示できない とか 逆アセンブル画面へ とかと出てしまいます。 どうすればコードを辿れるようになるでしょうか・・。
827 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 10:17:30 ] 変更したのにビルドされてない、とか別の場所のソースだったりとか
828 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 15:12:40 ] デバッグビルドにするとか
829 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 15:25:45 ] あーリリースビルドで最適化で消されてると中抜きの丸になるな
830 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 20:31:00 ] >>827-829 情報ありがとうございます。デバッグモードのままでこうなるのですが・・ 頂いた情報から調べてみようと思います。 ありがとうございました。
831 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 20:44:20 ] すみません。今まで殆どの定数を、 「ヘッダーファイルに#define」で作っていたのですが、 配列の要素数宣言などに使うわけでもなく、ただ1ソース内の複数メソッドで使う数値などは そのソースのグローバルスコープにstaticで作った方が良い気がしてきたのですが、 これはプログラミングの常識として、やらないべきなのでしょうか? やるべきなのでしょうか?
832 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:09:58 ] >>831 > そのソースのグローバルスコープにstaticで作った方が良い気がしてきたのですが、 C言語ならそのソースの頭で#defineすれば良い。 C++ならconst定数を使うべき。 いずれにせよやらないべき。 ↓↓C++にて↓↓ 今までは #define max_num 100 としていたところをヘッダに const int max_num = 100; と書けばよい。 ttp://www7b.biglobe.ne.jp/~robe/cpphtml/html01/cpp01042.html
833 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:18:11 ] >>831 1ファイルだけでしか使わないなら、そのファイルの先頭で定義するのは普通。 C++ならconst使え、とは832も言っているとおりだが。
834 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 00:11:02 ] >>832-833 ありがとうございます。用途に応じてconstを使うよう心がけようと思います。
835 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 00:36:35 ] 2つ質問させていただきます (1) char* x = "ABC"; *x = 'x'; を実行するとエラーになるのですが、なぜ2行目の代入はうまくいかないのでしょう (2) void test(const int n) { int a[n]; } int main() { test(5); } を実行すると、 定数式が必要です。 サイズが 0 の配列を割り当てまたは宣言しようとしました。 'a' : サイズが不明です。 というエラーが出てコンパイルできません。 testの仮引数を定数にしたので配列が作れると思ったのですがなぜだめなのでしょう。
836 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 02:03:41 ] >>835 (1) www.kouno.jp/home/c_faq/c1.html#32 (2) www.kouno.jp/home/c_faq/c11.html#8
837 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 02:58:24 ] >>836 ありがとうございます。(1)はわかりましたが、(2)に関しては const int n = 5; int a[n]; はコンパイルでき、違いがよくわかりません。 関数として用いる場合(>>835 の書き方)は事実上定数になっていない、ということでしょうか
838 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 03:21:53 ] >>837 それがコンパイルできるなら、たぶん C++ 使ってるんじゃないかと。
839 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 04:04:15 ] >>838 どこでCとC++の区別をつけるのかいまいちよくわかっていませんが、 C++のつもりで書いていました。
840 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 04:12:29 ] >>839 コンパイラが違う
841 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 04:24:55 ] >>839 CからC++が派生する過程で、constがついている変数は定数とみなすようにルールが変更された。 逆に言うと、constがなければ定数とはみなさない、というルールなので従うしかない。 VC系コンパイラなら、拡張子をcにすればconstがついていてもエラーになると思う。 これがgccだと>>835 の(2)すら通っちゃうんだが、言語仕様上はエラーになるのが正しい、はず。
842 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 04:28:04 ] >>841 gcc で通っちゃうのはおそらく C99 の仕業。たぶん const なくても通る。
843 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 04:41:14 ] C99制定前からのGCC独自拡張です
844 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 14:16:59 ] 質問です。 ttp://bal4u.dip.jp/mt/program/c-4/ ここの「数字変換 10進数を2進数に変換 dec2bin」を、 10進数から3進数へ変換するようにしたいのですが、うまくいきません。 どのようにしたらよいでしょうか。
845 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 14:43:18 ] >>844 どうしたらうまくいかなかったを書かないとなんともいえない。
846 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 15:32:41 ] 親クラス -(継承)-> 子クラス -(継承)-> 孫クラス というクラスで、孫クラスを親クラスに見立てて扱いたい(多態)と思い、 (親クラス型)孫クラス というふうにアップキャストしようとしたら、コンパイラに怒られました。 こういうの、って設計がマズいということでしょうか・・・
847 名前:844 mailto:sage [2010/02/27(土) 15:33:03 ] do { r = 0; non_zero = 0; for(i = dec_len - 1; i >= 0; i--) { d = tmp[ i ]; tmp[ i ] = d / 3; if(r > 0){tmp[ i ] += 3;} if(tmp[ i ] > 0){non_zero = 1;} switch(d) { case '0': r=0;break; case '1': r=1;break; case '2': r=2;break; case '3': r=0;break; case '4': r=1;break; case '5': r=2;break; case '6': r=0;break; case '7': r=1;break; case '8': r=2;break; case '9': r=0;break; } //r = d & 1; } bin[ bin_len++ ] = r; }while(non_zero); 主要部分を改造した物を上げて見ます。 ごらんの通り、答えが合いません。 全体的に訳が分かりません。(元のソースは理解できましたが……)
848 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 18:24:32 ] >>846 その変換は暗黙の変換で通るはず。 これ以上はエラーメッセージやソースを晒してもらわないとわかんない。
849 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 18:32:43 ] >>844 ,847 元のソースから変数名が適当で読みにくいソースだね。わけがわからないのはそのせいじゃない? 素直に一旦ふつうの整数値として取り出して3進の文字列に書き出すようにしたほうが 簡単だと思うよ。整数値に変換する部分は strtol() 使えば一発だし。
850 名前:844 mailto:sage [2010/02/27(土) 19:44:37 ] >>849 多倍長演算ってことになっているので、いったん数値に戻すっていうのも難しそう。 一応 50桁の10進数を3進数に変換したいと考えています。 他に簡単に10進 3進の相互変換が出来そうな仕組みはありませんかね。 とりあえず一桁の時の答えだけは合うようになった(笑)
851 名前:846 mailto:sage [2010/02/28(日) 15:24:38 ] >>848 すみません、何か勘違いしていたようです。 問題なく動きました。 失礼しました。
852 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 23:07:29 ] >>850 849 同様に俺も数値にした方がミスしにくいし応用も効くしいいと思うけどな 桁数多くてもgmp みたいなものもあるし,必要なら自分で class 作っても良いし まぁ目的に依るけどね >>844 のコードを変更することだけが目的ならしょうがないけどね
853 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:07:36 ] 初歩的な質問すみません、BYTE配列からDWORD型変数に数値をコピーした時、 1バイト分しかコピーできないのですが、(256以上が0…1…2… となってしまいます。) どうすれば8バイト分コピーできるのでしょうか。
854 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:49:47 ] > BYTE配列からDWORD型変数 C/C++にそんな型は存在しません。 MFCの用語はスレチな気がする。 ttp://pc12.2ch.net/test/read.cgi/tech/1250919279/ こことかか?
855 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:59:30 ] >854 MFC っていうか Win32 だと思われ。 書いてる事そのものは memcpy とか CopyMemory だけどそれが本当に自分のやりたい事かどうか 確認した方がいいかもしれない。
856 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 21:01:36 ] >>854 > C/C++にそんな型は存在しません。 小心者スレッドなんだからまあ良いではないか。 >>853 どんなコードでコピーしたの? そもそもBYTE型に256以上の値は入らないし、DWORDだったら4バイトだよね。
857 名前:854 mailto:sage [2010/03/07(日) 21:21:41 ] >>856 > 小心者スレッドなんだからまあ良いではないか。 一応 小心者 向けに多少はしたつもりだったんだが、 俺の言い方はやっぱまだ厳しかったか。 スマン
858 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 21:40:13 ] コード見たほうが早いなたぶん
859 名前:853 mailto:sage [2010/03/08(月) 00:08:15 ] >>854-858 ありがとうございます、memcpy使えば良かったですね、 他の事に気がいっててそんな事にも気付かなかった、 orz あとDWORDは4バイトだったんですね、ご指摘ありがとうございました。
860 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 10:55:08 ] 配列ならポインタを強引にキャストするだけでもよくね メモリ上の配置の把握が必要だけど、memcpyするにしてもそれは必要だし
861 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 12:43:22 ] >>860 エイリアシングルールというものがあってだな。 www.radiumsoftware.com/0304.html#030408
862 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 03:46:00 ] 8bit変数配列→32bit変数、ってだけならunion作れ 8bit変数配列→32bit変数配列、とかならどうしたもんだか
863 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 22:33:09 ] unionつかったらエンディアンの問題はどうするの?
864 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 23:04:11 ] 2倍あるいは1/2倍していたところをビットシフトに書き換えたら、若干遅くなりました。 同じかそれ以上の速さになることはあると思っていましたが、遅くなるとはどういうことなんでしょうか?? CPUには乗算や除算のほうが高速に行える回路が付いてるんでしょうか??
865 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 23:45:00 ] >>864 推測ではどういう風にでも考えられるので コンパイラにアセンブリを吐き出させてみればどうでしょう
866 名前:864 mailto:sage [2010/03/13(土) 01:38:25 ] >>865 ありがとうございます。 アセンブラは読めませんが、がんばって解読してみます。
867 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 10:20:26 ] >>863 気になるなら#ifdefするなり効率落として変換関数書くなりすればいいんじゃね 綺麗で効率いい方法は知らん
868 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 10:40:47 ] 絶対にWindowsでしか使わないのにクロスプラットフォームで書きたくなる病とかあるよな
869 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 12:11:15 ] >>868 できる限り標準に準拠するのは正しい態度だと俺は思うよ * ずっとWindowsだけの仕事をするとは限らん * 元々Windowsだけのつもりでもコードの一部流用とかすることがありうる
870 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 13:45:37 ] 8bit配列→32bitなんていう処理についての話からの流れだからなぁ 汚くする理由の無い部分は綺麗に書くのが当然だが、エンディアン絡みの処理を すっきり綺麗に効率良く、って訳には行かんだろ現状
871 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:15:49 ] >>869 * 言語標準に準拠しつつクロスプラットフォームではないコードは極めて一般的 * OS標準に準拠しつつクロスプラットフォームでないコードは言うまでもなく一般的 * そもそも「絶対に」という前提の話 まず、クロスプラットフォームと規格準拠は全くの別物。前者の需要は極めて稀。 Windowsアプリを書く時にクロスプラットフォームにしようとするのは、かなり病的 にならないと困難だと思うぞ。犠牲も大きいし。
872 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 15:25:22 ] Qtとかの外部ライブラリを使えば クロスプラットフォームでも楽に書けるぞ。
873 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 21:57:02 ] >>871 プラットフォーム依存性が必要無いところは敢えて依存性持たせない方が 良いと俺は思うけどな 必要もなくプラットフォーム依存してるコードもよくあるが 元々絶対に流用しないつもりでも一部切り貼りって結構あると思うぞ
874 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:02:26 ] forループのインデクスすらDWORD使うサンプルとかあるからな
875 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 07:46:33 ] 程度問題だな。病気レベルの無駄なことはやらない方がいい。無理せずに依存無く 書けるなら当然その方がいい。 Qtは微妙だろ。必要も無しにあれを選ぶ理由は無いと思う。
876 名前:872 mailto:sage [2010/03/14(日) 10:36:59 ] 別にQtじゃなくても、とにかくクロスプラットフォームな外部ライブラリなら 俺の言いたいことは伝わると思うんで、適当に読み替えてください。
877 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 15:01:47 ] クロスプラットフォームなフレームワークに乗っかれば クロスプラットフォームでも楽に書けるぞ。 ・・・当たり前だろjk
878 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 00:23:17 ] 本気で細かいことをしようとするととても楽に書けるなんてもんじゃないから、 普通は細かいことをバッサリ諦めるしか無いのがクロスプラットフォーム
879 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 00:27:38 ] まぁGUIに関しては特にそうだよね
880 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 08:24:51 ] 独自機能は全部諦めることになるしなぁ
881 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 21:37:14 ] >>878 細かいこと気にしない方が逆にいいものできたりして… 稀かもしれんが
882 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 22:23:42 ] >>881 「逆にいい」は稀かと あっても無くても関係ない、ならまだそれなりにある話だが CUIなら割と素直にクロスプラットフォームになりやすいけどな それでも、元の流れの内容をエンディアン違いにまで対応させようとしたら あまり綺麗には済まないが
883 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 21:46:48 ] CUIでも、実用品でクロスプラットフォームなコードになると大抵はマクロで個別に ソース分岐させてるけどな。C/C++標準だけで書ける実用品なんて小物だけ。 LinuxとBSD系ですら、パフォーマンスを実用レベルにする為には移植作業が必要に なったりする訳で。Windowsならなおのこと。
884 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 21:56:00 ] 標準の範囲ではWindowsでUnicodeファイル名を扱えないし ディレクトリすら作れないし バイナリファイルを標準入出力で読み書きできないし 大きなファイルのシークもできない
885 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 21:57:51 ] だからクロスプラットフォームなフレームワークに乗っかろうぜ と言ってるじゃないか。 だれもC/C++標準だけで満足はしないさ。
886 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:03:09 ] オープンソースだと、単にWindowsのUnicodeファイル名などは 切り捨てているものも多いな
887 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:18:27 ] そしてパスに空白を含むと落ちるクソアプリができあがると
888 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:24:03 ] >>887 > そしてパスに空白を含むと落ちるクソアプリができあがると たまにそういうクソアプリが見つかるけど、 それが原因だったんかい!
889 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 01:19:44 ] クロスプラットフォーム向けのフレームワーク使ったところで、問題の本質の ほとんどは解決しないよな
890 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 18:28:38 ] プラットフォーム依存性があるにしろオープンソースでクロスプラットフォー ムというと firefox, thunderbird, gimp, cygwin とか思いつくけど これらってクソアプリやへぼアプリの分類なの?
891 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 18:58:00 ] cygwinは最近出た1.7まではUnicodeファイル名に対応していなかった 実のところ、Windows専用でも、Unicodeファイル名に対応していないプログラムは ものすごく多い、特にコンソールアプリケーションではそれが普通
892 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 19:20:32 ] >>890 必死に移植作業してマクロで分岐させるんならいくらでもクロスプラットフォームに なるのは当然だろw
893 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:53:58 ] >>890 firefox, thunderbird, gimp, cygwin が クソアプリやへぼアプリだったら そうじゃないアプリって世の中にほとんどないんじゃないか?
894 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 23:49:10 ] クロスプラットフォームなコードでもクソじゃないのはあると言いたいんだろ だが、あの辺のは「現実に十二分な需要がある」から、仕方なく「多大な手間を掛けて 複雑なコードを書いて」実現してるから、牧歌的な話からは程遠い
895 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 00:16:50 ] >>894 > クロスプラットフォームなコードでもクソじゃないのはあると言いたいんだろ クロスプラットフォームのアプリのほとんどが クソアプリだってことが言いたいのかい?
896 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 00:19:05 ] クソアプリの定義にもよるんじゃないの 例えばlameは最優秀のMP3エンコーダーだが、Unicodeファイル名には対応していない
897 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 00:31:07 ] 英語限定ならば問題は大分少なくなりそうだな…
898 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 00:32:40 ] そうだな GUIの場合、IMEという難関もあるし
899 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 11:56:10 ] >>895 どう見ても真逆の意味にしか読めないが
900 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 12:05:23 ] コードは肥大するけどお勉強の為に非依存で書いてみました、でも誰も使いません けどね、ってのが無駄 自然に非依存なコードになるならそれでいいんだよ(エンディアンなんかは面倒な ことをしなきゃ非依存にはならんけど) 実需があるなら無理もしなきゃならないし、変態コードが肥大しても許される
901 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 12:08:51 ] 実装の手間自体もでかいが、テストの手間のほうがより悲惨だな クロスプラットフォームを本気で考えるのは、プロジェクトが大きくなってからで いいと思う
902 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 14:36:18 ] クロスプラットフォームにするほど 他人が使ってくれるかどうかっていうところがなw