2013年17プログラム129: スレを勃てるまでもないC/C++の質問はここで 21 (654)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
アセンブラ 13 (144)
【コボル】COBOL不要論【ただのDSLだよね?】 (353)
【iPhoneも】Titanium Mobileスレッド【Androidも】 (342)
iモード携帯電話用Java(iアプリ) Part22 (919)
【初心者歓迎】C/C++室 Ver.86【環境依存OK】 (103)
Git 6 (556)
スレを勃てるまでもないC/C++の質問はここで 21
1 :2012/07/15 〜 最終レス :2013/09/08 スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ 01 http://pc11.2ch.net/test/read.cgi/tech/1167476845/ 02 http://pc11.2ch.net/test/read.cgi/tech/1178503366/ 03 http://pc11.2ch.net/test/read.cgi/tech/1187521676/ 04 http://pc11.2ch.net/test/read.cgi/tech/1221633708/ 05 http://pc11.2ch.net/test/read.cgi/tech/1230516307/ 06 http://pc11.2ch.net/test/read.cgi/tech/1231564903/ 07 http://pc11.2ch.net/test/read.cgi/tech/1232983248/ 08 http://pc12.2ch.net/test/read.cgi/tech/1235921779/ 09 http://pc12.2ch.net/test/read.cgi/tech/1240022781/ 10 http://pc12.2ch.net/test/read.cgi/tech/1242300936/ 11 http://pc12.2ch.net/test/read.cgi/tech/1245059383/ 12 http://pc12.2ch.net/test/read.cgi/tech/1248010352/ 13 http://pc12.2ch.net/test/read.cgi/tech/1260842197/ 14 http://pc12.2ch.net/test/read.cgi/tech/1269273471/ 15 http://pc12.2ch.net/test/read.cgi/tech/1273368706/ 16 http://hibari.2ch.net/test/read.cgi/tech/1279285647/ 17 http://hibari.2ch.net/test/read.cgi/tech/1285115590/ 18 http://hibari.2ch.net/test/read.cgi/tech/1291571263/ 19 http://hibari.2ch.net/test/read.cgi/tech/1308106024/ 20 http://toro.2ch.net/test/read.cgi/tech/1316013463/
2 : >>1 これは乙じゃなくてポニーテールがうんたら
3 : 枯れ木過ぎてこのまま落ちそうだな
4 : びよーね・すっぽすっぽ先生を讃えるスレということで
5 : コード -1073741819 で終了してしまう くっそー
6 : すいません。教えてください。 入力された引数をトークンに分解するプログラムなのですが、 #define MAXARGS 1024 #define CHUNK 1024 int main(int argc, char *argv[]) { char **args; int err; while ((err = readcmdline(stdin, stdout, &args)) > 0) { if (strcmp("cd", args[0]) == 0) { chdir(args[1]); ... int readcmdline(FILE *i, FILE *o, char ***args) { char *prompt = getenv("PS1"); char *buf, *lasts, *token; int argc; /* メモリの割当 */ if ((buf = malloc(CHUNK)) = NULL || (*args = (char **)malloc(sizeof(char **) * MAXARGS)) == NULL) { perror("malloc"); exit(1); } .... をコンパイルすると、 In function `readcmdline': invalid lvalue in assignment と*args = (char **)malloc(sizeof(char **) * MAXARGS)) == NULL の所で怒られます。 本に書いてあったソースなのですが、そもそも宣言していない*argsに代入する事は可能なのでしょうか?
7 : readcmdline()のargs自体は、main()のargsへのポインタが代入されているから * args = ... で代入することは問題がないはず。 問題なのは、その行ではなくてその一つ前の行。
8 : >>7 buf = malloc(CHUNK)) = NULL を buf = (char *)malloc(CHUNK)) == NULL にしたらOKでした。すいません。 教えてほしいんですが、 main関数内で ポインタのポインタとして、 char **args;を宣言して、 そのアドレスを、 int readcmdline(FILE *i, FILE *o, char ***args) で受けて、 char ***argsに入っている事は解るんですが、 (*args = (char **)malloc(sizeof(char **) * MAXARGS) の場合、 *argsは何を示してるんでしょうか? *argsはどこでもポインタとして宣言していないような気がするんですが...
9 : >int readcmdline(FILE *i, FILE *o, char ***args) ここに書いてるやん
10 : typedef char ** charPtrPtr;とでもして、charPtrPtr * argsとでもしたらわかるかも知れない。
11 : う〜ん、 http://www.nurs.or.jp/~sug/soft/tora/index.htm あたりを読んで勉強してきます。
12 : 質問です。C++の設計者はどうしてあんなに分かりにくい仕様にしたんですか?
13 : >>12 Cのコードを使えるようにするため
14 : Cとの互換性の確保と、オブジェクト指向の概念の分かりにくさは、直接関係ないような気がしますが…。
15 : 実はオブジェクト指向ってしっくりこないんです!
16 : 質問ですが __int64 bit; //setbit = 1ull << i; setbit = 0; _bittestandset64(&setbit,i); のアセンブリコード出力が lea rcx, QWORD PTR setbit$87411[rsp] mov QWORD PTR setbit$87411[rsp], 0 bts QWORD PTR [rcx], rax mov rcx, QWORD PTR setbit$87411[rsp] となるんだが xor ecx, ecx bts rcx, rax となるようなソースコードを教えていただけませんか? 環境はVC2010、ターゲットCPUはSandy Bridgeです。 またiは0〜63の整数です。 放置するかアセンブラで書くしかないのかな
17 : >>16 最適化したらどうなる?
18 : >>17 すでに最適化(/O2)はかけています。 このコードではiの範囲とsetbitを指すポインタの有無を コンパイラが分からない事が原因なのではと考えています。 ちょっと逆アセも確認してきます。
19 : 逆アセでもほぼ同様でした。 (インライン展開された関係でレジスタが変わっただけ)
20 : Compiler Intrinsicsって割りと腐ってるのな
21 : __int64 setbit; setbit = 1ull << i; だと mov ecx, r8d mov edx, 1 shl rdx, cl になるのでとりあえずシフトを使うコードにしておいて 別の場所の最適化をしときます
22 : C言語でstaticを関数に付けると外部のファイルから参照できないということですが 他にも何かの効果があった気がします。 以下のような効果があるかどうか教えてください。 ・関数のアドレスが固定になる?ので関数呼び出しが高速化される ・関数内の自動変数も固定アドレスになる?(int a;がstatic int a;になる?) 以上について教えてください。
23 : >>22 関数の所在は元々固定的なので、呼び出しが高速になるわけではありません。 但し、コンパイラによっては静的関数のみ、インライン展開するので効果がないというわけでもありません。 また、自動変数は意味的に呼び出しごとに別のものでなければならないので静的関数ないであろうと静的にはなりません。
24 : 簡潔でわかりやすい回答ありがとうございます
25 : PeekMessageで自分で選んだメッセージだけ処理したいのですが PeekMessageを呼んだときに、他のウィンドウのWNDPROCも 呼ばれてしまうようです。 他のウィンドウや他のメッセージを全く処理したくないわけではないので 他のウィンドウのWNDPROCを何もせずに抜けるのはNGです。 キー・マウスやペイントを優先的に処理したいだけです。 他のウィンドウのWNDPROCを呼ばずに自分の選んだメッセージだけ 処理する方法はありませんか? Windows XP、Visual C++ 2010 Expressです。
26 : >>25 ttp://msdn.microsoft.com/ja-jp/library/cc410948.aspx 他のウィンドウのWNDPROCも呼ばれてしまうようです。の意味がわからない PeekMessageはあくまでスレッドに関連付けられたメッセージキューからメッセージを取ってくるだけ メッセージのディスパッチはしない
27 : 0: hoge.dll!WndProc(HWND__ * hwnd, unsigned int msg, unsigned int wparam, long lparam) 行 181 + 0x1c バイト C++ 1: user32.dll!77cf8734() 2: user32.dll!77cf8816() 3: user32.dll!77d08ea0() 4: user32.dll!77d08eec() 5: ntdll.dll!7c94e473() 6: user32.dll!77cf93e9() 7: user32.dll!77cf93a8() 8: user32.dll!77cf9402() 9: hoge.dll!DoEvent(unsigned int wMsgFilterMin, unsigned int wMsgFilterMax) 行 17 + 0x1d バイト C++ 10: hoge.dll!WndProc(HWND__ * hwnd, unsigned int msg, unsigned int wparam, long lparam) 行 181 + 0x1c バイト C++ 11:… DoEventはPeek/Translate/Dispatchする関数ですが、コールスタックはPeekMessageの行になっています。 ただし、PeekMessageには10:WndProcのHWNDとは別のHWNDを渡しています。 PeekMessageの中でごちゃごちゃ回って、0:WndProcにたどり着いています。 0:WndProcのHWNDは10:WndProcと同じハンドルです。 「PeekMessage 関数を呼び出すと、呼び出し側スレッドが所有しているウィンドウへ送信されたメッセージのうち、保留されていたものを取得できます。 SendMessage、SendMessageCallback、SendMessageTimeout、SendNotifyMessage の各関数を使って送信されたメッセージが、これに該当します。 システムは、内部イベントを処理することもあります。メッセージは、次の順序で処理されます。」 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ これでしょうか?
28 : スレを勃てる必要のある、低俗でないC/C++の質問って例えばどんなのですか?
29 : 最新の規格に関する質問
30 : >>28 最新の規格に関する質問 C++11/C++1y 15 http://toro.2ch.net/test/read.cgi/tech/1333433900
31 : >>28 【C++】高速化手法【SSE】 http://toro.2ch.net/test/read.cgi/tech/1130349336/
32 : unsigned long length = 100000; char *buff buff = (char*)malloc(sizeof(char) * length); strcpy_s(buff, length, ...); 略 としたい場合strcpy_sの第2引数がsize_t(unsigned int)を超えてしまうんですけど この場合どうすればいいですか?
33 : 別に超えないけど
34 : 符号無しintは0〜65535だろ
35 : >>34 32ビットなら0〜4,294,967,295
36 : そうだったんですね 言い方を変えます もしstrcpy_sの第2引数(文字列操作関数の文字数を渡す部分)が 受け取る型以上の数値を渡したい場合対応する関数って何ですか?
37 : キャスト以外の方法聞いてんのか? その場合32bit以上コピーしようとしてることになるってのは理解できるか?
38 : >>36 strcpy_sの第2引数ってバッファのサイズで、size_tだったと思うけど この型で表現できるサイズより大きいメモリは確保できないから考えるだけ無駄だと思うけど
39 : >>37 理解できます 32bit以上の文字数を扱う場合も書いた方が安全なのかって考えすぎてました >>38 メモリ確保できないなら詰みなので考えないようにします ありがとうございました
40 : Visual C++ 2010 Expressで質問です。 メンバイニシャライザで、包含しているインスタンスのメンバ変数も 初期化できますか? error C2059: 構文エラー : '.'というエラーが出てしまいます。
41 : 無理
42 : まじですか…ションボリ
43 : インスタンスって参照渡しすれば使いまわせますか?
44 : あんたの気持ちしだいだな 高潔な魂をもった人間なら使いまわせる
45 : delete this; するまでは生きてるんじゃね
46 : はぁ、そうですか ありがとうございました
47 : C言語の勉強をしているのですが、タイマーを使ったプログラムの仕組みというか概念がよくわかりません。 抽象的な質問で申し訳ないですが、わかりやすく説明して頂けないでしょうか。
48 : もう少しわかりやすく質問文を変更して欲しい
49 : >>47 イベントドリブン形式のプログラムを書いてみるとわかるよ
50 : >>47 割り込み を検索すればいい。
51 : >>47 定期的に関数を呼び出してもらうための仕組み
52 : C++で質問です。 class A; class B; class C; があって、class AはpublicデータメンバとしてB obj1;を持っています。 各クラスは.cppと.hで書かれています。 class Cのメンバ関数内でobj1のpublicなメンバ関数を実行しようとすると >error C2065: 'obj1' : 定義されていない識別子です。 というエラーが出るのですが、どこが間違っているのでしょうか インクルードは問題無いです…
53 : 書き忘れました、クラスの前方宣言もしています
54 : ttp://ideone.com/oDblr もっと詳しく書かないと 何が問題になってるのかわからんぞ
55 : >>54 さんありがとうございます >a.obj1.funcB(); を obj1.funcB(); としていたみたいです。
56 : あぁ、ドット演算子じゃなくてアロー演算子の方なのですが a->obj1.->uncB(); としてもエラーでした error C2065: 'obj1' : 定義されていない識別子です。 error C2227: '->funcB()' : 左側がクラス、構造体、共用体、ジェネリック型へのポインターではありません。 となります。
57 : >>56 ttp://ideone.com/rRd0H 前方宣言だけでそのクラスのメンバ変数を使おうとしてないか?
58 : C# expressを使用しています フォームにTopMost=Trueを設定し、最前面に表示させながらフォームは決して アクティブウィンドウにならないようにしたいのですが、どのような方法がスマートなのでしょうか? マウスクリックは透過させているのですが、フォームの位置やサイズを変更すると 勝手にアクティブになってしまい困っています
59 : ふらっとVisual C#,C♯,C#(初心者用) Part98 http://toro.2ch.net/test/read.cgi/tech/1349163087/
60 : 誘導ありがとうございます♪
61 : 質問です std::wstring型の文字列(reserve済)に、1文字だけ追加したい場合、 最も高速と思われる関数はどういったものになりますでしょうか。 wstr.append()では、wchar_t型の文字入力は受け入れてくれないようなので…。 おねがいします。
62 : pushbackがあったんですね。 解決しました。失礼しました。
63 : windowsで連続したメモリを確保するには、どの関数を使うのが一番なのでしょうか?
64 : virtualalloc
65 : >>64 ありがとう
66 : 知恵を貸してください。 gccとmakeで開発しています。C++でなくCの範囲での開発です。 適切な値が設定されないまま、関数ポインタによる呼び出しが行われてしまうのを 回避する方法を探しています。 以下に例を示します。
67 : struct handlers { void (*handler_1)(int); void (*handler_2)(int, char); // ここに追加(1) }; int main() { struct handlers obj[10]; //何らかの構造体メンバ初期化←ここの修正をし忘れる (*obj.handler_1[10])(0); (*obj.handler_2[10])(0, '1'); // ここに追加(2) }
68 : 問題は、handlers構造体の仕様を変更、特にメンバを追加したときです。 上記のソースコードに、(1)構造体宣言にメンバ(関数ポインタ型)を追加し、 (2)main()内に呼び出し文を追加、 するところまでは良いのですが、ここでプログラマがミスをして、 新たに追加されたメンバを初期化するコードを書き忘れたとします。 コンパイルは成功してしまい、プログラム実行時に異常が発生してしまいます。 追加メンバ分の初期化コードの書き忘れを、C言語の範囲内で、 コンパイラのエラーや警告で検出する方法はないものでしょうか? ただし、プログラム実行時のチェックによる方法は不可とします。
69 : 長くてごめんなさい。 失敗例1 「;」をパラメータとするマクロを使ってhandlers構造体を宣言し、同じマクロで 「,」をパラメータにして、メンバ初期化関数の引数リストの部分を作れないかと 思いましたが、「,」をマクロのパラメータにできず断念。 失敗例2 メンバ初期化のための原型となるhandlers変数を1個用意して、 構造体初期化子{}を使って初期化する方法。 [{}内の項目の個数]より[構造体メンバの数]のほうが多くてもコンパイルエラーになってくれないのでNG。
70 : 補足です。 例題のソースコードでmain()内の呼び出し部分の配列添え字がおかしくなってます。 すみませんです。
71 : 最近入門してロベールの本読み終えたんだけど テンプレートとかboostとか駆使したり、コードインジェクトとかいう謎の技術でDirectXをハックしているソース見てしまって 底の深さに愕然としてしまった こういうバッドノウハウ的なものや、boost、C++11などの最新技術をスマートに学ぶにはどうしたらいいかね おすすめのソースとか書籍あったら紹介してもらえると嬉しい
72 : java屋さんの自分は、thisが大好きです。 C++でもjavaのようにthis使っていいですか?
73 : >>72 Javaと違ってC++はポインタなんでそこだけ注意
74 : C++の勉強の最初の一冊はロベールとC++プログラミング入門(オライリー)のどっちが
75 : C初心者の低俗な質問ですみません。 /* foo /* bar */ baz */ のようなコメントのネストが許されない 仕様になっているのはなぜなんでしょうか。 Cコンパイラがforやifブロックのネストを解釈できるのなら /* 〜 */ のネストだって 理解可能だと思うんですが、コンパイラが混乱することでもあるんでしょうか。
76 : >>75 http://www.kouno.jp/home/c_faq/c20.html#20 > Cのコメントが入れ子にできないのは、PL/Iのコメントが入れ子にで きないからである。CはPL/Iからコメントについてのアイデアを借用 している。 PL/Iのコメントがネストできない理由は知らん。
77 : /* を含む文字をコメントに入れられないから・・・と言いたいけど */ を含めない問題は放置なので多分関係ない
78 : >>77 単に、処理がちょい面倒で、そんなに必要性を感じなかっただけでしょ。
79 : まあ手抜きだな
80 : そのせいで#if 0の方を多用しちゃう
81 : 範囲が広い場合は#if 0しかもう使わないな
82 : 逆にもし/* 〜 */ のネストが許される仕様だとコンパイラが処理(判断)に困る。。。 そんな記述の具体例ってあるでしょうかね。 自分はまったく思いつかないのですが。。。 ところで本当をいいますと、今私が使っているのはMQLって言語でして、仕様的にほとんどC言語なんですが #ifや#ifdef系のプリプロセッサが一切ないんで、上記のワザが使えないんです。 そのくせにコメントがネストできないという負の遺産(?)はシッカリ受け継いでいるんです(>。<)
83 : >>82 別にないでしょ、あなたの言う通りforやifブロックのネストを解釈できるのなら /* 〜 */ のネストだって理解可能だと思うよ 本当にほんのちょっとだけコンパイラ(プリプロセッサか)の処理が面倒なだけで たまたま不便な仕様だったと諦めるしかないね
84 : 一行コメントがあるなら、全部一行コメントでコメントアウトしてしまう手はある エディタにその機能がなければ、マクロで機能追加したり
85 : みなさん、レス感謝します。 ちなみに自分がやっているのは、if条件の一部を一時的に殺してテスト … if( /* a>b && */ c>d ) { if( /* e>f && */ g>h ) { if( /* i>j || */ k>l ) { … さらにこのif前後の処理ブロックをまとめて一時的にコメント・アウトしてテストするってことです。 行頭//は使えますが、まとめる行数が多いので、入れ子状態で大域を/* */で括れると便利なこと この上ないんです。 でもありがとうございました。
86 : フラグ使うと動作に影響するしねえ ま、しゃーないんじゃない
87 : 組込みで開発環境してエラーだらけになったと思ったら、 /**/ネストできるコンパイラだった・・・
88 : たまにそういう処理系あるよね
89 : >>85 >さらにこのif前後の処理ブロックをまとめて一時的にコメント・アウトしてテストするってことです。 こっちは #if 0 とかで良いんじゃないの?
90 : >#ifや#ifdef系のプリプロセッサが一切ないんで、上記のワザが使えないんです。
91 : プリプロセッサが無いっての
92 : 行コメント使え いちいち一行づつコメントアウトするのがめんどくさいとか言うのは無しな そんなもん、エディタの設定(マクロとか)で、大抵なんとかなる もしかして、行コメントもないのか?
93 : 行コメントも無いの? 俺はエディタのマクロとかで、選択行全部を行コメントアウト出来るようにしてるよ
94 : お前ら>>85 も読めよ・・・
95 : 私のせいでスレが荒れてしまったようですね。すみません。 コーディングのアイデアをお寄せいただけるのは有難いのですが、 私の質問は ・(コメントのネストを)どうやればいいのでしょうか? ではなくて、 ・(ネストできない仕様は)なぜなんでしょうか? です。 実際は、コメントアウトしたい部分は関数の中だし、任意の文字列を埋め込みたいわけじゃないので if(0) { … if( /* a>b && */ c>d ) { if( /* e>f && */ g>h ) { if( /* i>j || */ k>l ) { … } } } … } みたいにやって一時的に実行を迂回させてます。 ありがとうございました。
96 : >>95 多分、解析できない記述が存在するからだと思う /* int a=1; int *p=&a; int b=2/*p; */
97 : その例は「コメントが閉じられていない」と正しく解析できると思うけど
98 : >>97 それは正しくない
99 : そもそも外側のコメントがない状態で コメントになってしまう問題のある記述じゃないのか?
100 : だからこそ>>97 が正しいと思うんだけど そうじゃないらしいな
101 : みんな分かってるようだが俺には96が何をいいたいのかさっぱりわからん
102 : b = 2 / (*p); 2 / 1なのかコメント最初の/*なのか じゃないのか?
103 : >>102 正解!
104 : そう言いたいんだろうってのは伝わるがコメント開始なのが明白だからな・・・
105 : >>104 何で?
106 : >>105 http://ideone.com/koUYhr >>96 の外側のコメントを外したら int b=2/*p; の /* 以降がコメントになるでしょ。 ならネスト出来る仕様だったら>>97 の言う通り「コメントが閉じられていない」と解釈されるのが自然だし、 普通にコメントのネストを解釈するそう解釈する処理系はもちろん作れる。
107 : 途中送信してしまった。 そもそも式がどうとか解釈する前にプリプロセッサがコメントを除去するんだから>>102 みたいな曖昧性は生じないんじゃないの。
108 : その除去でプログラマが意図しないコメント解釈されたらどうなるか
109 : ネスト出来ない仕様 → コメントを外すと問題が起こる ネスト出来る仕様 → コメントを外しても外さなくても問題が起こる どちらにせよ問題があるので 無関係としか言いようが無い
110 : 2/*pの/*をコメント開始と捉えて、コメント閉じられてないからってコンパイルできなくなるのはCの規格上どうなの?
111 : そもそも演算子をあまりくっ付けて書くべきではないってこった 字句解析的な意味で
112 : いずれにしても混乱が起こる事がわかっているのなら、わざわざ複雑な機能はいれないだろ 費用対効果悪すぎって判断じゃね? って言うか、D&E読む限り、行コメントの方を推奨している模様
113 : 一方D言語はネスト可能な /+ +/ を導入した
114 : ソースにインベーダーの敵が侵入するわけか
115 : なるほど、除算ポインタ演算子か(なんて言うんだっけ?*pの演算子)
116 : >>110 規格上は問題なくて、単にコンパイラの不備だとおもう ソースを読み終えた時点で「/*」に対する「*/」が見つからなければ、除算演算子とポインタ演算子の組み合わせって判断できるからね つまり何重の入れ子コメントになっていても、一番外側の「/*」「*/」ペアが成立する限り その中身を読み飛ばせばいいだけ。入れ子コメントの実装は可能 ちなみに入れ子コメントに意味があるか、を問題にするのはナンセンス 正しく構文が解釈できる限り、プログラマに対する制限は緩い方向(自由度が高い方向)へ仕様設計すべきだからね メモリーやディスク容量、コンパイル時間等によって制限されるなら仕方ないと言えるが
117 : すまん、訂正させて欲しい 誤> 規格上は問題なくて、単にコンパイラの不備だとおもう 正> 規格には問題ないのにエラーとして処理するのはコンパイラの不備だとおもう
118 : トークン分割の妨げにならなければ空白の数は無視するんだっけ?? ※文字列中は例外だけど。
119 : int x[2]={1,10}; int *i; ↑だとエラーが出ないのに ↓だとエラーが出ます int x[2]; x[0] = 1; x[1] = 10; int *i; error C2143: 構文エラー : ';' が '型' の前にありません。 何故こうなるのか分かりません・・・
120 : ttp://codepad.org/S2TcBwvl エラー出ないけど
121 : >>119 C89規格でコンパイルしているからでしょう int x[2]; int *i; x[0] = 1; x[1] = 10; としたら大丈夫。 変数の宣言がブロックの先頭になければならない。
122 : C++なら通るな Cは変数宣言をブロックの先頭でしないといけないからこうだろ int x[2]; int *i; x[0] = 1; x[1] = 10;
123 : おっとリロードしてなかった、すまん
124 : >>116 じゃあさ、やってみてよ。 gccならオープンなんだからさ。 口だけなら、誰でも言えるんだよなー。
125 : >>116 アホか コメントはコンパイラじゃなくプリプロセッサが処理するんだよ 演算子なんて解析しねーよ
126 : そうか!わかった!! ifはコンパイラが処理するからネストできるけど コメントはプリプロセッサが処理するからネストできない ってことですね!
127 : 違う。たとえば#ifはプリプロセッサが扱うがネスト出来る http://ideone.com/rKasOJ
128 : >>127 わざわざありがとうございます! コメントと間違うから/と*は離して書きましょう ってことですね! じゃあ 結局 コメントがネストできない理由ってなんすかねー Orz
129 : 昔の人がそう決めたから。それ以上でも以下でもない なぜ昔の人がそう決めたかと気になるかもしれないが、たいてい当時の技術的には難しかったとかそんなもんさ
130 : if/for → ネストできる /* */ → ネストできない 両者を分かつ技術的困難が何なのか興味あるな。 カーニハンの存命中に尋ねてみたい。
131 : そうそう わざわざサポートするメリットが無いとか、どうせそんな理由だよ そもそも、コメントはネストさせるようなものでは無いし デバッグで一時的に〜とかは、本来の使い方ではないわな
132 : >>130 コメントをコンパイルするとか、空間的にも時間的にも、ムダばかりでメリットがない
133 : 本当にコメントを書く事しか頭に無かったんだろうな コメントアウトは考慮外というか
134 : 技術的な困難といえば、構文解析だろな C++でもあったろ?テンプレート書くときの括弧が場合によって演算子に判断されるようなの それが昨今の構文解析技術の進歩で解消されたあれ
135 : 技術の進歩というか 単にそういう仕様変更をしただけというか
136 : >>132 >コメントをコンパイルするとか、 誰もそんなことは言ってないが?
137 : プリプロセスでもなんでもいいから とにかく処理したくないってことだろう 昔はコンパイル凄く遅かったから コメントアウトするくらいなら削除したんだろうよ
138 : ムダばかりなら最新の言語がサポートするはずないよな http://wisdom.sakura.ne.jp/programming/d/d3.html
139 : ただの歴史的な理由以外に特に理由は無い
140 : >>137 これは一理あると思う。 そうでなくともifブロックやforループの解析で どこまでソースを読み込まなくちゃならないかわからないのに コメントごとき(笑)でワーキングメモリを消費したくないとか。 そりゃコメントネストの方が優先順位が低いわな。 「あん時 研究所にあったマシンがPDPじゃなくてVAXだったら ワシらもちゃんと実装しておったよ」とかw
141 : 蒸し返して悪いんだが、仕様上は/(除算)の後にスペースを入れるように規定されてるって理解すればいいのかな 今まで""の中以外ではスペースは入れても入れなくてもどちらでもいいと思っていたからこれは盲点(不勉強)だった b=2/*p; b=2 / *p;
142 : スペースを入れるように規定されているというか、 スペースを入れないとコメントになってしまうように規定されているんだよ
143 : >>142 そのとおり。 JIS X 3010で「文字の並び/*は注釈の始まりを示す」 と規定されているよ(6.4.9) だからb=2/*p;をb=2/(*p);とは解釈しない。 116の間違いはこの点にあるとおもう。 除算を意図しても構文が【規格上間違っている】のだ。 これはコンパイラ(プリプロセッサを含む)のインプリの話ではなく C言語規格の問題だ。125の揚げ足取りでは何の反論にもなっていない。 116の言う「コンパイラの不備」ではなく、規格に反した記述だったから エラーではじかれたわけだね。 ネスティングができない理由は、当時の計算機リソースだとコンパイラ (プリプロセッサを含む)のインプリが楽だったから… くらいじゃないのかな。(←これはオレの想像)
144 : あの世から「だから#ifとか用意してやってるのに 最近の若いモンは!」みたく言われちゃいそうw
145 : #ifの方がparseしやすいってことなのか
146 : 2GBくらいまではできるはずなのですが callocで確保できるだけ確保したら1.6GBしか確保できません メモリは1バイト確保しようとしたら8バイトに丸められると見たので 8の倍数から確保できなくなったらマイナス8して再度確保という感じでしています for(unSize=262144; 8<=unSize; unSize-=8) { do { calloc(unSize, 1); } while(確保できる間); } 確保部分のソースとしてはこんな感じです 実際はリスト構造を使用してそこに確保したポインタを指定しています リスト構造自体のサイズを考慮しても2GB - 1.6GBの400MBには達しないのですが どうすればプロセス毎の最大値2GBまで確保できるようになりますか?
147 : > 2GBくらいまではできるはず ただの妄想だろ 環境くらい書け
148 : 環境 OS Vista Home 32bit メモリ3GB メモリクリーナーでは2GB超のメモリを空きメモリにできるのですが その後>>146 を試しても1.6GBしか確保できません
149 : 仮想と物理をごっちゃにしてるような気がする... (´・ω・`)
150 : 連続した1.6GB超えの領域がないんだろ。
151 : >>149 物理メモリ3GB 仮想メモリ4GB です >>150 1度に2GBを確保しようとしているのではなくて >>146 のソースで示した通り小分けにして確保しています
152 : 32bitならそういうもんなんじゃねーの
153 : タスクマネージャでメモリサイズ見れば?
154 : タスクマネージャのパフォーマンスタブの空きメモリがまだあっても プロセスタブにあるメモリ列が1.6GBになると止まってしまいます
155 : >>147 プロセス毎に動的確保できるのは2GBまで
156 : VC++は16バイトなんて噂もあるから、一度16バイトで試してみればいいんじゃ
157 : メモリ関連で思い出した mallocで小分けにして物理メモリの空き領域以上を確保したら それ以外の既存のデータがページファイルに追いやられるよね これで一応メモリ掃除できたとか思ってたけど 見かけ上空きメモリが増えただけで メモリクリーナーはまた別のやり方でメモリ空けてんの?
158 : >>154 ならWindowsはそういうものなのかもね
159 : >>157 メモリクリーナーも一緒(mallocじゃなくて別の関数かもしれんが) ページファイルに追いやって、すぐ使える物理メモリを確保する
160 : こういうもんだと納得するしかないんですね ありがとうございました
161 : mallocやcallocで確保した領域は プログラム終了時に明示的にfreeするべきでしょうか。 それともやるだけムダでしょうか。
162 : 終了時まで確保しっぱなしなの? 使わなくなったタイミングで解放しないの?
163 : >>161 基本的には適切なタイミングで解放しましょう
164 : 返事ありがとうございます。 大昔、fj.comp.lang.cでこの辺りが話題になったことがありまして 上でmallocの話が出て思い出しついでにちょっと尋ねてみました。 当時、malloc/callocがメモリを確保するヒープ領域は、プログラム(正確にはプロセスだったか?)終了後に OSが解放するんだからfreeは不要だ!と主張する人がいたことを憶えています。 プログラムを"安全側"に設計することに嫌悪する人もいたり… 私もfreeするべきだと思います。 プログラムもOSも、それぞれが自分がやったことの後始末は、基本的に 自分の中で責任持って完結するべき、と思ってます。 OSがやってくれるからサボってていいや〜みたいな考え方だと 余計なトラブルを招きかねないですよね。まぁ安全側の考え方ですが。 つまらない話、すみませんでした。
165 : >>164 その手の話は... 終了直前以外でfree不要と言うバカいるの?2人目 http://toro.2ch.net/test/read.cgi/tech/1359585842/ でやってくれ。
166 : 宗教論争っぽくなるからな。。。
167 : >>164 プログラム終了時にOSなりライブラリが自動で解放してくれるのが 保証されているなら、解放処理は書かなくてもいいだろうが、 解放処理が書かれていれば 「このコードを書いた人はメモリをちゃんと把握しているな」 という示しになる。
168 : _beginthreadex(NULL, 0, fnFunction, NULL, 0, 0); とする場合fnFunctionを変数参照で指定する場合は変数をどう定義したらいいですか? イメージとしては unsigned int *sum; sum = fnFunction; _beginthreadex(NULL, 0, sum, NULL, 0, 0); としたいのですがパラメーターと互換性がありませんと出てしまいます
169 : いま手元にコンパイラがないので想像ですが、宣言を unsigned int (*sum)(void *); でしてみたらどうでしょうか?
170 : ありがとうございます unsigned int (__stdcall *sum)(void*) としたらいけました でもなんか今まで書いた事のない書き方なので気持ち悪いです もっとスマートな書き方は無さそうですし慣れるしかないんでしょうか UINT (WINAPI *sum)(VOID*) これくらいでしょうか
171 : >>170 typedef unsigned int (*FUNCPTR) (void *); FUNCPTR pf; pf = func; pf(…); で良いんじゃないの
172 : __stdcallはWin32APIの独自キーワードですが、それ以外は関数のポインタを 宣言する普通の(標準規格に沿ったの意)書き方です。 下段のように書き換えても本質は同じなんで、私はそんなにスマートさは感じませんけど。。。
173 : >>172 すみませんでした。アンカー(>>170 )の入れ忘れでしたorz
174 : そこらへんは個人の好みだろ 何回も書くなら>>171 みたいにしたらいいと思う ()の位置が気持ち悪いのはわかる
175 : >>170 >今まで書いた事のない書き方なので気持ち悪いです 関数ポインタ宣言の基本型さえ押さえときゃ気持ち悪くならないよ。 関数の返却値の型 (*変数名)(引数の宣言); ※オレの流儀は sum = &fnFunction; だなぁ。ま、好みの問題だww
176 : >>170 > でもなんか今まで書いた事のない書き方なので気持ち悪いです 関数ポインタの記述のしかたはCの中でも特例だから、 「そういうもんなんだ」と思う以外に選択肢は無い。
177 : __stdcallとかの呼び出し規則は独自拡張だから 括弧の位置がコンパイラによって互換性なくていちいちtypedefしてた記憶がある
178 : >>175 typedef struct hoge { unsigned int (__stdcall sum)(void*) }; って事? hoge.sum hoge->sumができなくね?
179 : >>178 ちょっと175との絡みがわからないけど、hogeはタグ名であって構造体変数じゃないからできないんじゃないの?
180 : こういう事もできる typedef unsigned int FUNC(void *); FUNC* pf; pf = func; pf(…);
181 : >>179 unsigned int _(_stdcall sum)(void*)とか hoge.sum = &fnFunction hoge->sum = &fnFunction できないんじゃない?
182 : ttp://ideone.com/CKPRSO こういう話かな?
183 : >>182 コピペの恐怖
184 : 182を読んでも178と181が何を言いたいのか良くわからんなぁ そもそもなんで関数ポインタから関数の型の宣言に話がかわったんだ?
185 : 割と知られていない関数の typedef の挙動 http://ideone.com/kwArU8
186 : >>183 ああ、指摘ありがとう。間違っていたので直しました ttp://ideone.com/SZgkp1
187 : >>181 構造体のメンバに関数ポインタを持つことは可能 #include <stdio.h> unsigned int MyFunc( char *buf ) { puts(buf); return 1; } int main(void) { struct _hoge { unsigned int (*sum)(void *); } hoge; hoge.sum = &MyFunc; (*hoge.sum)("hello, world"); return 0; }
188 : >>187 すまん。うかつだった orz hoge.sum = &MyFunc; は hoge.sum = &MyFunc;
189 : unsigned int (*sum)(void *); hoge.sum = &MyFunc; hoge.sum = MyFunc; &があっても無くても同じ動作するのか てっきり前者と後者で違うから unsigned int (**sum)(void *); hoge.sum = &MyFunc; unsigned int (*sum)(void *); hoge.sum = MyFunc; こうしないといけないと思ってた
190 : 暗黙に、関数は関数ポインタに変換される。 暗黙に、関数ポインタは関数に変換される。
191 : 謎が消えたありがとう
192 : 昨日から何を聞きたかったのか、やっとわかった… (´・ω・`)
193 : 関数呼び出しや配列要素参照の定義って 無駄が多いように思うんだけど何か理由でもあるの? 関数呼び出し 関数(引数リスト) or 関数ポインタ(引数リスト) 配列要素参照 配列[インデックス] or ポインタ[インデックス] 関数が関数ポインタに暗黙に変換されるのなら 関数ポインタ(引数リスト)の定義1つで済む気がするのだが
194 : 関数と関数ポインタは違うだろう
195 : 関数ポインタ(引数リスト) の定義だけとする 式が必要な箇所で <値 or 括弧式> '(' の並びを見つけた時点で 関数呼び出しであるという判定を行ってパースするはずだけど、 ここでこの <値 or 括弧式> が関数ポインタに変換可能なら良いとすれば 関数も関数ポインタも両方受け付けられるのではなかろうか
196 : 有り体に言えば、関数名は、その関数本体のアドレス(ポインタ)を持つということじゃないですかね。
197 : 左辺値のまま呼び出しを行いたいのだろうか 関数ポインタに暗黙変換して右辺値になって何か不都合ある?
198 : プログラム グローバルに下記を設定しておく。 static int WIDTH=320,HEIGHT=240; static array<bool,2>^ pixels_new=gcnew array<bool,2>(WIDTH+2,HEIGHT+2); //一回ごとの細線化結果を入れる static array<bool,2>^ pixels_old=gcnew array<bool,2>(WIDTH+2,HEIGHT+2); //一回ごとの細線化対象を入れる bool change_flag; private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Graphics^ g=e->Graphics; int X0=10,Y0=10; int X1=340,Y1=10; int UPPER_LEFT=2,LOWER_RIGHT=6,UPPER_RIGHT=0,LOWER_LEFT=4; Color color1; int i,j; Bitmap^ bmap_exp=gcnew Bitmap(WIDTH+2,HEIGHT+2); //拡張画像 Bitmap^ bmap_thin=gcnew Bitmap(WIDTH,HEIGHT); //最終線画化画像 とまだまだプログラムは続くのですが 「グローバルに下記を設定しておく。」とはどこからどこまでを設定すればいいのでしょうか
199 : そんなの他人に分かるわけないだろ 自分で決めろよ
200 : >>199 //homepage3.nifty.com/ishidate/vcpp10_g8/vcpp10_g8.htm こちらのHPを見て勉強しているのですが理解ががが
201 : >>200 初心者にC++/CLIやらせるとか糞だな C++/CLIはC/C++じゃないのでスレ違い http://toro.2ch.net/test/read.cgi/tech/1268613679/ まずはそんな画像処理なんかより言語自体の勉強をすべき
202 : >>201 スレチすいませんっした
203 : GetDiskFreeSpaceExで空き容量を取得したいんですが 今後1000000TBのHDDが出たとして 正常な空き容量を返せますか? この関数が返す戻り値が__int64のようなので これの最大値までは大丈夫なのでしょうか? それともOSで最大値が制限されてたりしますか?
204 : __int64までなら大丈夫
205 : C言語のキャストと、reinterpret_castで違いってあるのでしょうか?
206 : あるよ
207 : ないだろ あれは目印だめの存在
208 : const void* p; (int*)p; // できる reinterpret_cast<int*>(p); // できない char c; (double)c; // できる reinterpret_cast<double>(c); // できない
209 : >>208 おおお。有難うございます。 後者のはstatic_castなら大丈夫なんですね。勉強になりました。
210 : 間違った勉強の仕方をしても意味ないよ? 208が紛らわしいレスしてる責任があるけど 209が仕事で恥かいても俺は知らないけど
211 : >>210 初心者みたいだし仕方ないよw
212 : >>208 のように嘘を教える者。嘘を信じる者がいるのが悲しいですね。
213 : int&x=a; static_cast<unsigned long>(x) = b; の挙動を正確に説明できる奴なんて早々居ないんじゃね
214 : aはなんなんだよ
215 : C++の型キャストで一番安全そうに見えるstatic_castが実は一番危険
216 : なんで釣堀になってんの
217 : unsigned long型の右辺値にキャストして代入なんてできるの
218 : ばかばっかかここ
219 : ばかばーっか
220 : ばかという奴がバカボンド
221 : プリプロセッサの一部適用てなんか方法あったけ? gcc E -DPAPAN_DNA=1 maman.c > okochan1.c gcc E -DPAPAN_DNA=2 maman.c > okochan2.c PAPAN_DNAの部分だけ展開するような
222 : sed -e 's/PAPAN_DNA/1/'
223 : unifdef
224 : ある2つのライブラリがFuncを持ってて両方リンクしなきゃならない場合ってどうするんですか?
225 : WindowsのDLLなら LoadLibrary と GetProcAddress で それぞれのDLLのFuncのアドレスを取得して 別々に使う。
226 : >>224 linuxのsoなら dlopen と dlsym で それぞれのsoのFuncのアドレスを取得して別々に使う。 静的libなら。。。
227 : ラッパーdll噛ませるしかないのかな
228 : わざわざdl作らなくとも、ラッパー関数を作れば良いだけじゃないのか?
229 : 印刷設定の用紙サイズを変更するAPIがあったら教えてください 変更したらOS上で変更しない限り永続させたいです お願いしますm(__)m
230 : 自己解決しました
231 : と思ったけどやっぱり分かりません
232 : >>231 ソース貼れや
233 : >>231 そりゃ誰にも分からん
234 : 回答できないならレスするなゴミ
235 : ゴミ質問者にはゴミ回答者がよく似合う
236 : >>234 うるせえよゴミw 早くRよゴミw
237 : アマゾンギフト10万円で死んでやるよ
238 : どんだけぇ〜!
239 : STLのstringについて質問です。 char型の非constアドレスを要求するCのライブラリ関数などに このオブジェクトの持つバッファのアドレスを渡すにはどうしたらよいでしょうか。 data()のアドレスをキャストして無理やり渡してみたら書き込む事は出来たのですが、 保証されない動作になると思われるうえ、当然length()の値との整合性が取れなくなってます。 と書いたのを読み返してみたら、関数側がlengthの仕組みを認識出来ない以上無理な気がしてきた。 char型のバッファでワンクッション置くしか無いんでしょうか…
240 : たぶんない
241 : >>239 ほらよ http://ideone.com/7uRXoZ
242 : std::basic_string<T>はメモリの連続性を保証しないのでstd::vector<char>を通した方がよい ttp://ideone.com/0Njz2Y
243 : 保証するよ C++11から
244 : そうだった失礼
245 : >>241 なるほどresize()を使って帳尻を合わせておけばいいんですね ありがとうございます >>242 連続性が保証されていないバージョンがあったんですね 参考になります
246 : >>245 C++03までは規格上は保証はされていないけど、 連続性の無い実装は1つも無いよ だからこそC++11で保証するようになったんだし
247 : 誰か立ててくれませぬか スレ立てるまでもない質問はここで 126匹目 質問する前にGoogleで検索しましょう。http://www.google.co.jp プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。 ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。 Javascript は Web 制作板、CGI は Web プログラミング板へ。 業界談義、愚痴はプログラマ板へどうぞ。 ゲーム関係の話題はゲーム製作板へどうぞ。 ネタ、板とは関係の無い話題はご遠慮ください。 前スレ スレ立てるまでもない質問はここで 125匹目 http://toro.2ch.net/test/read.cgi/tech/1361608847/
248 : >>247 他人任せの精神異常者はさっさと消えてください
249 : VC++にてBluetooth通信するプログラムを作成しているのですが、 Bluetoothデバイスをサーチするときの BLUETOOTH_DEVICE_SEARCH_PARAMSの設定を詳しく教えてください。 fReturnAuthenticated = 以前にペアリングしたことがある fReturnRemembered = ペアリングしたことはないが、以前検索に引っかかったことがある? fReturnConnected = 現在接続しているデバイス fReturnUnknown = 一度もペアリングしたことのないデバイス fIssueInquiry = ? 他のところも間違えていたら指摘お願いします
250 : >>249 その情報にいくら払えるって?
251 : >>250 そんなこといわんといて・・・
252 : 英語を勉強しるよ
253 : すいません、教えてください。 #include <signal.h> void (*signal(int signum, void (*handler)(int)))(int); は intを引数に取り、void型の戻り値を持つ 関数ポインタの宣言。 とは、違うんですよね? どのように解釈するのでしょうか? この宣言から signal( SIGINT, SIG_IGN ); がコンパイルエラーにならない理由が良く分からないです。
254 : >>253 signal()の戻り値は関数ポインタ。 第一引き数はint。 第二引き数は関数ポインタ。 SIG_IGNは関数ポインタのはず。
255 : typedef void (*signal_handler)(int); signal_handler signal(int signum, signal_handler handler); こう解釈する
256 : K&Rですら反省しているうんこ文法なのでそういうものだと思って覚えましょう
257 : C言語初めて、2ヶ月程度の初心者です。 free関数に関する質問です、よろしくおねがいします。 free関数は、どうやって、どこまでのメモリを解放するか判定しているのでしょうか? free関数にわたすのは、先頭のポインタですよね。終了点はどこから情報を得ているのでしょうか。 int* px; px = (int *)malloc(sizeof(int) * 10); という感じで、メモリを動的に確保した後に、 free(px); で普通に解放。 しかし、ためしに、 px++; /*してから*/ free(px); 解放してみると、派手にエラーを吐いたので、 実行時の解放中に気づいた?ようです。 px++; px--; free(px); だと正しく解放したようです。 よろしくおねがいします。
258 : >>257 処理系依存の話になるが、 たいていはmallocが呼ばれたときに、ポインタからサイズが得られるように 構造体を使ったヒープや配列で管理している。
259 : >>257 _msize(px); でサイズ得られるから 内部で管理されてる事になるね
260 : >>258 ありがとうございます。 別のところで、管理されているのですね。 ということは、 malloc() で動的に確保したメモリのポインタに (別のアドレスを)再代入しない方がよさそうですね。
261 : >>260 当たり前だろボンクラ どんな本で勉強してんだパーかおめ
262 : >>259 自分の環境では、 undefined reference to '_msize' となりましたが、たしかに、環境によってはメモリサイズが得られるようですね。 ありがとうございます。 >>260 たぶん当たり前すぎて、書いてありませんでした。。(^^;)
263 : >malloc() で動的に確保したメモリのポインタに >(別のアドレスを)再代入しない方がよさそうですね。 これって行った場合、 プログラム終了時に一般的なOSならfreeされますよね?
264 : C++でguiアプリ作りたいんだけどオススメの方法おしえて
265 : C++/CLIでCLR
266 : C++Builder
267 : 以前は、wxWidgetsをやってたひとが、最近は、FLTKをつかってるといってた
268 : ええとQT?
269 : Qtがいいの?
270 : >>263 free()していないメモリブロックは、OSなりでよきに計らわれる。 なので、生存期間の短い大量のメモリを使用しないようなプログラムでは ポインタ変数の使い回しによるfree()の省略はしばしば行なわれる。
271 : freeしない派ってほんとうざいわ
272 : free必須信者ってほんとうウザい。 Rばいいのに
273 : くだらん宗教論争する連中が一番ウザいです
274 : freeしたいやつは自分が担当するソースだけしとけ freeしたくないやつは自分が担当するソース以外はfree消すな
275 : >>274 そのうちゴチャゴチャになって freeしたメモリブロックをべつのソースモジュール内で再度freeしてしまう罠
276 : 初心者は、 if(ptr) { free(ptr); ptr = NULL; } みたいに書くといいよ。俺はしないけど
277 : うわ、変になった。 if(ptr) { free(ptr); ptr = NULL; }
278 : if(ptr) って要るのか?
279 : free(0); はなにもしないことが保証されている。 ISO/IEC 9899:1999 7.20.3.2.2 void free(void *ptr); If ptr is a null pointer, no action occurs.
280 : フリー(無職)の俺も何もしない
281 : >>280 ♥
282 : ptrが指してるものがなにか別のポインタを持っていて、 それを先にfreeしてからptrをfreeするという手順を取るというときに すでにptrがfreeされたものが与えられてしまってもぬるぽにならないように。
283 : ((man *)280)->deleteThis();
284 : >>282 nullpoになるわけないじゃん
285 : ∧_∧ ( ・∀・) | | ガガッ! と ) | | Y /ノ .人 / ) .人 < >_∧∩ _/し' < >_∧∩`Д´)/ (_フ彡 V`Д´)/ / ←>>282 / ←>>284
286 : >>282 malloc〜free malloc〜free と処理が分離されててptrを使い回すならわかるけど malloc malloc 〜 free free みたいな状態でptrを使い回すってこと?
287 : int i; char **ptr; ptr = malloc(sizeof(char*) * 5); for(i=0;i<5;i++){ ptr[i] = malloc(sizeof(char) * _MAX_PATH); } for(i=0;i<5;i++){ free(ptr[i]); } free(ptr); こういう事じゃないの
288 : 今日の釣堀 http://itpro.nikkeibp.co.jp/article/Watcher/20130331/467401/
289 : >>279 炎上学習法で得た知識はダメだな。www 未だに生きていてNULLをfreeしても良いとしていない規格がある。でも教えてやらない。www
290 : >>289 そんなマイナーな環境があるんだ‥‥というか、それってシステムコールを直呼びしているだけの手抜きライブラリだねえ ま、アロケータはmalloc()/free()といえどもラッピングして使うようにしているから、問題ないけどね、1callぶんだけ手数とスタックがちょびっとだけもったいないけどね、ま、ちょびっとだけど
291 : >>290 > そんなマイナーな環境があるんだ 自分の知らない規格はマイナー wwww 炎上学習法にはのらない。教えてやらない。www > それってシステムコールを直呼びしているだけの手抜きライブラリだねえ システムコールを知らない事を自白しちまったな。wwww Rよクズ
292 : 春だねぇ
293 : HAL
294 : 2013: A 2ch odyssey
295 : 規格? 規格と実装をごっちゃにしてないか
296 : バカはほっとけよ
297 : 列挙型enumについて質問です。 // 向き enum MUKI {EAST,SOUTH,WEST,NORTH}は実質MUKI {0,1,2,3}とのことですが、 MUKUI muki_states; muki_states = 1;みたいな演算って可能でしょうか?
298 : >>297 なんでやってみないの? これからの人生、そういうスタンスで生きていくつもりなの?
299 : 言語が書いてないし、代入は演算じゃないし、自分で試さないのはなんで
300 : 人間の屑ばっかりのスレで役に立たねぇなぁ キャストすりゃいいんだな、調べたら分かったわ お前らは用済み
301 : Yahoo知恵袋で聞いて来いよ やさしく教えてくれんだろ
302 : >>300 これからの人生、そういうスタンスで生きていくつもりなの?
303 : enumで列挙宣言しておきながら敢えて整数値を代入する、その意図(理由)に興味があるな
304 : 調べてわかるなら最初からそうしろと ま、釣り針だろうけど
305 : >>303 ファイルから
306 : >>305 なるほど ファイルにはコード化されたMUKIデータが入っていてそれを読み込むんだね 読み込んだ後に int muki_states; if(muki_states==1) より MUKI muki_states; if(muki_states==SOUTH) のほうが分かりやすかろうと なるほど、なるほど。ありがとう
307 : ファイルから読み込むと普通は文字列になるんだけど、一旦intに変換してさらにenumにするの?
308 : >>307 > ファイルから読み込むと普通は文字列になるんだけど、 それは作り方次第(というか読み方次第?)。たとえばfscanfという関数があってだな…
309 : >>308 いきなりfscanfしちゃうの? データの妥当性何かのチェックとかしない派?
310 : >>308 おいおい 文字列として読み込んで、妥当性チェックした後に変換だろ sscanfでもstrtolでもいいが、俺はあまりsscanf の優位性を感じない
311 : 現在の議論の本質と無関係なポイントで揚げ足をとりたければ勝手にどうぞ。
312 : 揚げ足というのは誰のどの点なんだ?
313 : ファイルから読み込むと普通は文字列になるんだけど、… ファイルから読み込むとき、普通は(まずは)文字列として読み込むんだけど、… 前と後では質問した人の知識背景がちがうよね
314 : というのが揚げ足取り
315 : まぁ質問していた無能はいなくなったからもういいんじゃね
316 : >>313 fwrite,freadは場合によっては使うけど、まさかfscanfするなんて想像もしなかったからね
317 : iostreamの拡張?てどうやるんですか?なんのためにやるんですか?
318 : >>316 まぁ「ファイルから読み込むと文字列になるw」という誤解をとくための例ならべつにいいんじゃん?
319 : #define EAST 0 #define SOUTH 1 ... にして int muki_states としとけば muki_states=1 も muki_states=SOUTH も(*^ー゚)b これじゃダメなん?て聞こうとしたけど、PCに戻ってみたら、すでに祭りは終わっていましたとさ (゜Д゜) メデタシ メデタシ
320 : >>318 いや… それの例にfscanfなんて出すから、余計におかしくなっていると言う話じゃね?
321 : fscanf が読み込むのは紛れもない文字列だと言う事に気付いて無いんじゃないかな。
322 : %dで読み取ってint変数に入れた値も文字列というのか?
323 : >>322 それなら直接enum変数に読めばいいよね。 態々int変数経由するまでもなく。
324 : >>322 ファイルには文字列で書いてあるだろう?
325 : >>323 > それなら直接enum変数に読めばいいよね。 いや、だからさ。 intでもenumでもfloatでもいいんだよ。ファイルから読み込むと文字列になる、と考えてる人に対して 文字列型以外で読み込むこともできるよ、ていう例なんだろうから。 >>324 >ファイルには文字列で書いてあるだろう? お前は帰っていいよw
326 : >>325 君が言ってるのは多分俺のことだろうけど、俺も別にファイルを読むと必ず文字列になるなんて思ってないし、俺の他にも誰もそんな人いないから、見えない敵と戦う必要ないよ。 俺はただ単に、ファイルからデータを読み込む文脈で、int経由でenum変数に代入するなんてシチュエーションないだろって思っただけだから。
327 : あのぉ… 皆さん オレの書き込み(319)はスルーですか… そうですか… (ノД`)
328 : >>326 >>307
329 : 以下、無限ループ
330 : >>328 ん? その>>307 が俺なんだけど。
331 : 一体何人が参加した議論だったんだろうな カオスになっててワロタ
332 : 誰か >>327 を構ってやれよ
333 : >>331 自演っぽいのもいるからユニーク・ビジター数は案外少ないかもな
334 : fscanf()するとか言っちゃった奴が暴れただけ
335 : >>330 > >>328 > ん? > その>>307 が俺なんだけど。 だから自分が >>307 で書いた文章を深呼吸して落ち着いてからよく読め って意味じゃないの? ファイルから読み込むと文字列になるって自分で書いてんじゃんw
336 : >>335 落ち着いて読むも何も、俺がファイルを読んだら必ず文字列になるなんて思ってないから、見えない敵と戦わなくていいんだよってことで。
337 : コンピューター言語をいじくる前に先に日本語の読み書きを勉強した方がいろいろと捗るとおもうぞ ま、これが落としどころ、ということで 327はタイミングが悪かったね〜 これに懲りずに、またいらっしゃい
338 : 見苦しいわ。
339 : 匿名性の面白さが出たカオスっぷりだったね。 まぁ、楽しめたんじゃないの?
340 : さっきから一生懸命に終わらそうとしている奴はなんなの
341 : >>340 > さっきから一生懸命に終わらそうとしている奴はなんなの 自分に不利な議論の流れだから。当然しょっw
342 : 端から見てると、どいつが終わらせようとしているかもわからんぞ
343 : 面白そうな流れだったのにリアルタイムで参加できなくて残念ですw >>319 #defineのアイデア ソースの可読性という点においては大差なさそうだけど、 enum型には規定された値以外の使用(代入等)をコンパイル時にチェックできる、という利点がありますね。 なのでenumのほうが多少はメリットがあるんじゃないでしょうか。 (ご本人抜きにして部外者がプログラムの仕様を語っても仕方ないですが) >>336 > 落ち着いて読むも何も、俺がファイルを読んだら必ず文字列になるなんて思ってないから、 最初に、ファイルから読み込むと普通は文字列になる、って自分で書いてますよねw 物忘れが激しいタイプ?揮発性メモリ? 荒れた原因を作った真犯人が、見えない敵と戦わなくていい、とか、ほとんど人事不省ですかねw その上にデータの妥当性チェックに話をすり替えるから、ますます流れがおかしくなったんですね。
344 : >>343 普通は文字列になるということは、文字列にならない場合もあるということ。 妥当性チェックの話は、それがfscanfを使ってはいけない理由だから。内容が保証されているバイナリデータをfreadで読み込む場合以外では、普通は文字列として読み込んで、パーズしてバリデーションだよね。
345 : テキストはダメでバイナリなら中身が保証されてる(キリッ って決めつけちゃってるところが… ま、その何というか… ええ、アレ、ですわ
346 : >>345 バイナリなら中身が保証されているなんて言ってないよ。 内容が保証されているバイナリデータなら、freadで読む場合もあるって書いてるでしょ。 それにテキストが駄目なんて書いてないし。 テキストファイルをfscanfで読むのが駄目だって書いてるだけだし。 ちゃんと読んでくれよ。
347 : テキストファイルをfscanfで読むのがダメなんてことはない
348 : 内容が保証されているバイナリファイルをfreadしていいなら 内容が保証されているテキストファイルもfscanfしていいよね
349 : これで最後。 fscanf()は、scanf()とよく似た致命的な欠陥があって、「完全に正しい」とは限らないテキストファイルの読み込みには向いてないの。 で、普通はどうするかというと、1行毎あるいはファイル全体を文字列として読み込んで、parseしてvalidationしてから変数に保存する。 それが安全なやり方。
350 : freadにも致命的な欠陥があって、 「完全に正しい」とは限らないバイナリファイルの読み込みには向いてないな。
351 : >>350 man freadして、向いてるか向いてないか自分で考えろ
352 : 意味の無いやり取りはもうやめてくれよ。
353 : object->~object()で好きなタイミングでクラスのデストラクタを呼び出せることは知っているのですが… Destroy(object); みたいな感じでデストラクタを好きなタイミングで呼び出す関数を定義することってできますか? 既に上記のような関数が存在してればその関数でも構わないのですが…。
354 : すみません…質問の仕方が悪かったですorz 一旦スルーしてください…。
355 : delete this;
356 : delete c++;
357 : 16ビトのサイズとか具体的に決まってる場合多いじゃないですか。ハイルの形式って。 そういうハイルを読み書きするときには決まったサイズを保存する型って どうしたらいいですか。
358 : 16ビトてきまてるなら、16ビトの変数をよういすればいいじゃないかな
359 : >>357 short [], usort [], int16_t []など
360 : >>359 ありがとうございまする。 後ろについているカッコはなんですか? shortはintより短いことを保証するに過ぎませんよね。 int16_tが正解ですか? さようならば。
361 : >>360 []は配列。 複数の連続した16ビットのデータを読み書きすると思って配列にしただけなので、そうでなければ無視してくれ。
362 : int16_tってどう定義されているの?
363 : typedef select<sizeof(int) == 2, int, select<sizeof(char) == 2, char, select<sizeof(short) == 2, short, select<sizeof(long) == 2, long, void>::type>::type>::type>::type int16_t;
364 : LONG_MAX >= 2^31-1 じゃなかったっけ?
365 : unsigned
366 : unsigned float unsigned double
367 : そしてこのように話が進むと、めんどくなって「じゃーint使うのやめてshortでいいわ」って ことにしてしまいたくなる
368 : >>364 CHAR_BITが16かもしれない
369 : しかしこれはint16_tの定義だからその場合は==1か! 脊髄反射はダメだなやっぱ
370 : まあ sizeof(T)*CHAR_BIT==16 のようにビット数で比較したとしても >>363 じゃ不十分なんだけどね
371 : もう環境依存の予約語でいいよ
372 : Cからポータビリティを捨てたらゴミしか残らん
373 : ヘッダファイルとインクルード関係の使い方がよく分かりません。 cppに関数を継ぎ足すたびにhを編集して・・・とやっていけばいいのでしょうか。ものすごく間違えそうで危ない気がするのですが。
374 : 外に公開するものはヘッダに書く はずかしいところはcppに書く
375 : >>373 間違えるとコンパイラが教えてくれるから危ないことなど全くない
376 : >>373 .hは目次、.cppは本文と思えば分かりやすいんじゃないかな。 先に.hを書いて、.cppは後で書く。
377 : 逆に.cppから書く俺みたいなのもいるがね テストまでやってから公開って考え方
378 : 公開する .h は、設計段階で決定するから、 .cpp に合わせて .h を編集ってことはあまり無いなあ
379 : いろいろ決めてから書く人はヘッダから、具体的に処理書いてって肉付けしてく人はソースから 書くんじゃない?
380 : いきなりコード書きだすのは良くない。 趣味のプログラムなら勝手だが。
381 : お前らビルドはいつするんだよ ビルドすること無しに.cppを書き続けるのか?
382 : 慣れてくるとビルドはたまにしかしないな 週一とか
383 : コード書くの遅すぎ
384 : 最近はビルドが早いからな。 ビルドエラーや実行時エラーに頼ったコーディングスタイル、 設計や机上デバッグを軽視している輩が増えているような 気がする。
385 : 開発中は、基本今変更したファイルのみコンパイル対象になるから もうずっと前からビルド時間なんて気にならなかったが
386 : 組み込みで特に小さいチップだと、EEPROM書き換え回数に制限があって もったいないので無闇にビルド→書き換えをしないよう設計と机上デバッグを煮詰める。
387 : >>386 組み込みのこと全然知らないんだけど、書き込みせずにテストは出来ないの?
388 : フラッシュメモリも内容の保持保証が約10年だとは割りと知られてないようだな SDカードに入れたデジカメの画像は大切ならBD-REに焼いとけよ
389 : ROMと言えば。。。 (  ̄ー ̄)y-~~ 「ROMだってランダムアクセスできるんだから、そういう意味ではRAMじゃないの?」 とのたまう、素直で内気な少年でした… 今から○十年前の話です。
390 : >>389 その頃から既に屁理屈っぽい萌芽が育ち始めていたんだろうね
391 : >>387 環境によるんじゃね? だからこそ、環境がどうであろうが実施できる机上デバッグなんだと思う
392 : >>387 ICEで確認してからだな
393 : >>389 律儀に RWM とか書いてたな…
394 : 390は技術屋には向かないな
395 : >>394 あら傷ついちゃったの?www
396 : >>393 > >>389 > 律儀に RWM とか書いてたな… 初めて知ったけど、これってなんて読むの?リウォム?リワォム?
397 : 記憶があやふやだけど、素直に「アールダブルエム」とか言ってたような気がする。 「ロム」みたいな言い方ができなかったのも、流行らなかった理由かも。
398 : >>397 たしかに、こりゃ一文字ずつ読むしかないですよねw レス、ありがとう! なんとなく WORM (Write Once, Read Many)を思い出すなぁ。。。
399 : 名前のみが重要な#defineは全部enumでまとめた法が良いの?
400 : ちょっとなにいっているかわかんない
401 : つまりだな 識別子(?)として「RED」「GREEN」「BLUE」を使いたい。割り当てられる値はどうでもいいって時に #define RED 1 #define GREEN 2 #define BLUE 3 とするより、 enum color { RED , GREEN , BLUE }; した方がいいか、って質問だろ? 答えはYES。 使い方によるがenumなら値の妥当性チェックをしてくれるから。
402 : しまった!揚げ足とられる前に訂正しておくわ #define RED 0 #define GREEN 1 #define BLUE 2 に差し替えてくれ
403 : 差し替えの意図がわからん。
404 : >>401 それよりもスコープの問題の方がでかいね
405 : >>401 ありがと そう言いたかった #defineは全部enumに直すよ
406 : > enumなら値の妥当性チェックをしてくれる どういうこと?
407 : typedefしたときの話だろ
408 : typedefにそんな機能ないだろ
409 : >>408 馬鹿か typedef enum{...} E; void f(E e){} f(10); // compile error
410 : enum E{...} void f(enum E e){} でいいじゃんtypedef関係ないよね そもそもCではエラーにならないし C++でエラーになるのは「値の妥当性チェック」じゃなくて単純に型によるもの
411 : enumのあとになんで名前をつける必要があるの? この名前使うの?
412 : >>411 他の人間にコードの説明するときに使う
413 : グループ名
414 : >>411 > enumのあとになんで名前をつける必要があるの? > この名前使うの? 列挙型の定義と変数宣言を別に行う際に使える。 ※この名前をタグ名と呼ぶよ。 enum ScreenColor {RED, GREEN, BLUE}; enum ScreenColor color; 定義と変数宣言を同時に行うなら省略可能だよ。 enum {RED, GREEN, BLUE} color; ちなみに別途、 enum PrintColor {CYAN, MAGENTA, YELLOW, KEYPLATE}; という定義があっても color = CYAN; と代入するコーディングミスはチェックできる。 ScreenColor型変数のcolorにCYANは有効じゃないから。
415 : スレチらしいのでこちらに来ました playsound関数についてなんですが、 プログラム起動時に.wav形式のものを再生したいのです。 リソースからひっぱってきて再生する形にしたいのですが、 どうもうまくいきません。playsound関数など調べても いまいち自分がやりたいのと大きく違って、あまり参考にはなりませんでした そして、ON/OFFを切り替えることができるボタンなども、自分なりに探しましたが 探すのが下手らしくあまり参考にはならなかったです。 もしよろしければ、サンプルソースコードを書いていただけると嬉しいです。 もしくは、上記のヒントや方法などを教えて下さい。 (C++でフォームを使用するものです)
416 : //PlaySound.c #include <windows.h> int main(void){ PlaySound("SOUND1", GetModuleHandle(NULL), SND_SYNC|SND_RESOURCE); return 0; } //PlaySound.rc SOUND1 WAVE "sound1.wav"
417 : SND_RESOURCEを付けるのがポイント。 GetModuleHandle(NULL)の代わりにWinMainのhInstanceを使ってもいい。
418 : >>416 >>417 さん すいません、先に言うのを忘れていましたが、私初心者に近いので ソースコードの詳細利用方法があまりわかりませんでした。 すいません。 また別のスレに移動します。 ソースコード、情報提供 誠に感謝します。
419 : そんなに難しい話じゃないよ。 <windows.h>をインクルードしておき、PlaySound APIを呼べば音が鳴る。フォームを使ってる場合でも同じ。
420 : プログラム板 自治スレッド Part6 http://toro.2ch.net/test/read.cgi/tech/1368020285/ 強制IDの導入議論を行っています。
421 : クラスのメンバ変数をconstにしたい場合 staticにしないと初期化出来ませんか?
422 : は?
423 : >>421 コンストラクタ
424 : C++とは言ってないが
425 : >>421 メンバ初期化子 でもあまりconstメンバ変数は使わない
426 : グローバル変数は危険だと聞いて、ローカル変数のみでゲームプログラムを組む練習をしたいのですが、スコープ外に出る時に変数は消えてしまいますよね。 どうすればいいんでしょうか。
427 : >>426 スコープ外、例えば関数を読んだ先で使いたければ、 呼び元で必要な変数群を構造体で用意しそのポインタを渡す
428 : ××は危険だと聞いてそれに向き合わず逃げるようでは Cなんぞ使うべきではない なぜならC言語そのものが危険だから ・・・あれ、Cの話だっけ?
429 : グローバル変数と聞いただけで火がついたように襲い掛かってくる連中がいるから そういう意味では確かに危険
430 : >>424 グローバル変数とローカル変数と動的確保は適材適所。 どれがよくてどれが悪いという話ではない。 一般論としてグローバル変数は少ないほどいいというだけ。
431 : >>429 ほかにもGOTOを諸悪の根源とする原理主義者たちとかw いそうだねぇ
432 : gotoはだめだろ
433 : んなことはない
434 : C言語初心者です。 #include <stdio.h> int main(void){ int water = 198; int milk = 138; double tax = 1.05; int pay = 1000; int change; printf("%d", pay- (int)(tax * (water + milk * 2))); return 0; } これは汚いプログラムですか? 友人に聞いたら、先に宣言をまとめてしてしまったほうがいいと言われたのですが、よくわかりません。 回答よろしくお願いします。
435 : なんか自己解決したような気がします。 これだと見ただけでは何がしたいのか分かりづらいというか分からないですね。 全部宣言し、各商品の値段を出し、何を答えとして出すっていう分かりやすい順序を 作ったほうがいいということなんでしょうか。 一応自分で改善案をつくってみました。 #include <stdio.h> int main(void){ int water,milk,pay,sum,change; double tax; water = 198; milk = 138; pay = 1000; tax = 1.05; sum = (int)((water + milk * 2)* tax); change = pay - sum; printf("%d",change); } どちらが理想に近いプログラムですか?
436 : >>432 例えば多重ループの中から抜けたいとき for() { for() { for() { 〜 if() goto LoopExit; } } } LoopExit: gotoなしで書くとフラグと複数breakの組み合わせになると思うが それよりもいっきにジャンプしたほうがシンプルで分かりやすくないだろうか? 「goto=悪」を金科玉条とするんじゃなくて、 要するに使い方(プログラマの思想?)次第じゃない?
437 : >>435 考え方による。正解はない。 とにかく冗長でも分かりやすい記述を好む派と、簡潔で少ない行数であることを好む派がいる。 ちなみに前者の書き方は関数型言語に近いから前者の思考で書きたければそっちも勉強した方がいいかもしれん。 その書き方専用の定石というのも存在する。
438 : >>435 最初にまとめて宣言するのはC89的な古くさいプログラムで、C++ではナシだな 「変数が初期化されていない」期間は できるだけ短い方がバグが入りにくい 例外的なものは全体的に使い回す変数かな その場合は初めて使う時に宣言すると、 その処理をやっぱ2番目に置こうと思った時に不便
439 : >>436 基本的にそういう場合は関数に分けた方がいい で、returnで抜ける ただ、gotoの方がいい場合もあるので100%関数にした方がいいとは言わない
440 : >>436 そのための大域脱出=try-catch-throw ですよと
441 : 正常系で例外使うのはgotoと変わらない
442 : goto否定の発端ってほぼ全部gotoで書いちゃうような輩のせいだろ。 チョコチョコ使う分にはむしろ直感的で読みやすいソースになる。
443 : >>439 > >>436 > 基本的にそういう場合は関数に分けた方がいい syori(); --------- void syori() { for() { for() { for() { 〜 if() return; } } } return; } 動くだろうけど、これが基本とは思わないな 関数コールのオーバーヘッドと引き替えにどういう利点がある?
444 : むしろループそのものをiteratorやvisitor使って抽象化する
445 : おっ 構造化プログラミングの話か? #今の若い人は知らないだろうな I/OやASCIIでPascalが流行った時期があったよ オヤジの懐古趣味w すまんね http://ja.wikipedia.org/wiki/%E6%A7%8B%E9%80%A0%E5%8C%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0#goto.E8.AB.96.E4.BA.89
446 : goto を使わない馬鹿 そればかり使う馬鹿 グローバル変数 を使わない馬鹿 そればかり使う馬鹿 C言語 を使わない馬鹿 そればかり使う馬鹿
447 : >>444 やりすぎはコードの見通しを悪くする
448 : >C言語 を使わない馬鹿 そればかり使う馬鹿 仕事上、Cを使わざるを得ない、とか、(ほかの言語を使うから)Cを使う必要がない、って人もいるかもよw
449 : 実際の開発でGOTOなんか使うの?
450 : >>443 ループがそれほどあるだけで 普通は結構な行数だろ 短いなら別にgotoでもいいけど、 大抵は関数に分けた方がいい場合が多い
451 : 独りよがりな考えを普遍的事実のように書く輩って自分では意識してない(できない)んだろうな (´・ω・`)
452 : >>450 環境によっては、無駄な関数コールを減らすことを考えざるを得ないこともある。 RAMが256byteしかないとか
453 : そんなならもうアセンブラ使えよ
454 : 多少goto使ってでも、Cだとアセンブラと比べて作業効率が桁違いなのだ
455 : do〜while(0)でbreakしてるのをみると、 素直にgoto使ったんでいいんじゃないかと思う時はある
456 : ただ、goto嫌いな人が無理に使うことはないよ スキルの低いうちは封印した方がいい
457 : 俺ならbreakフラグを使う
458 : 全てのループはgotoで置き換えられる
459 : gotoとifで置き換えられる すべてのプログラムは、連接、分岐、繰り返し、の三要素で必ず表現できるんだっけ? えーっと なんの定理だっけ? まぁ論理的に可能というだけで、 必ずしも見通しのよいコードになるとは限らないと思うけど
460 : フラグをいくつも使って多重ループから脱出するよりは gotoを使ったほうが見通しが良くなる場合もある
461 : // フラグをいくつも使って多重ループから脱出するよりは // gotoを使ったほうが見通しが良くなる場合もあるので というコメントを残しておけば、引き継いで保守する人も納得する。 納得されなかったらム板かマ板のコメントスレにあげられる。
462 : >>461 そんなコメントいらんわ
463 : ラベル名にBREAKを含めてるね
464 : むかしから... goto肯定派は、何でもかんでもgotoでやりたい、と主張している「わけではない」のに goto否定派は、gotoなんか不要だ、使う必要は全くない、という主張になっていることが多そうな気がする この温度差はいったい何なんだろうって思うよ
465 : break が「一つ上のレベルに脱出する」という機能でしかないからではないか? ラベル付き break であれば温度差は解消される ラベル付きbreak‥‥‥これって goto?
466 : redoはgotoでなければ実現できない
467 : 条件脱出用に関数内で1つだけの脱出ラベルに対するgotoなら 個人的には容認かな。setjmp / longjmpのほうがいやらしい。
468 : 前後を見ないとgotoによりすっ飛ばされている区間を見落としてしまうという恐れ goto-free で縛ればそんなことを「一切」気にしなくて済む
469 : ラベルで検索すればいいだけだから、いろんなところで 使われてそうなbreakよりもしかして見落としにくいんじゃね?
470 : gotoは便利なんだよ。 ただ、馬鹿に使わせるととんでもないことになるから信用できない奴には使わせたくないってだけで。
471 : C++の規格書って日本語版はないの?
472 : JIS X3014(C++03)がある C++11はまだ ただし他のいらない規格票もたくさん入っていて分厚い本の一部 1万前後だったかなあ
473 : FindFirstFileでヒットしたファイルの、タイムスタンプを取得するために、 WIN32_FIND_DATA構造体にセットされる値を読みに行っていますが、セットされる値は キャッシュされるようでして、頻繁にファイルのタイムスタンプが更新される場合には 使えません。FindFirstFileでヒットしたファイル名を用いて、stat 関数なども使ってみましたが 状況は同じでした。このキャッシュをクリアする方法を教えてください。 Windows7上で動く、ネイティブコードのコンソールアプリです。 よろしくお願いします。 (マネージコードですと、Refresh()というメソッドが使えるようなのですが・・・)
474 : 上記への追加です。 デバッグビルドしました場合は、キャッシュされず、毎回最新のタイムスタンプが 取得できるのですが、リリースビルドしました場合にはキャッシュされた値しか 取得できないという状況です。
475 : GetFileTime
476 : >>474 http://d.hatena.ne.jp/satosystems/20110517/1305585726
477 : >>475-476 情報ありがとうございました。キャッシュされているようだと断言して いましたが、結局私の環境ではキャッシュが原因ではなく、FindFirstFileの 誤動作(仕様?)が原因でした。 FindFirstFileで検索するファイルが置かれているパスは、かなり深い階層の フォルダにありまして、検索用の文字列としてとても長い文字数のものを 指定していました(恐らくMAX_PATH数を超える文字数)。その結果、ヒットした ファイルそのもののタイムスタンプではなく、そのファイルが置かれているフォルダの タイムスタンプがWIN32_FIND_DATA構造体にセットされていました。 教えて頂いたGetFileTimeでも、引数にファイル自体のパス名を与えているのに フォルダのタイムスタンプが取得されました。 (ただし、デバッグビルドした場合はヒットしたファイル自体のタイムスタンプが とれていました)
478 : そこでためしに、ファイルを置くフォルダをもっと浅い階層にして、検索用の 文字列ももっと短くて済むようにしてみました。その結果、きちんと検索で ヒットしたファイル自体の最新のタイムスタンプがセットされるようになりました。 (デバッグビルド、リリースビルド双方とも) MAX_PATH数を超える文字数を引数に与えていたと思いますので、FindFirstFile の使い方の間違いだとは思いますが、それではデバッグビルドしても同様の動きを してくれれば、それこそもっと早くデバッグできたと思いますのに、デバッグビルドした やつを使ったら、かえってデバッグの障害になったという顛末でした。
479 : シングルトンの重要性を教えてほしい 普通にstaticとどう違うの?
480 : 最初に取得する時までコンストラクタが動かない ただのstaticメンバ変数だと、複数のシングルトン間の初期化の順番が仕様で未規定
481 : >>479 シングルトンのが響きがかっこいい
482 : 複数のシングルトン間のじゃないわ 複数のstaticメンバ変数間の、だわ シングルトンだと初期化順は取得した順 相互に使うようなものでも、コンストラクタでお互いを使わない限りは問題ない
483 : シングル + クルトン
484 : CやC++って Microsoftが作ったの?
485 : ちょっとは検索してみようとか思わないのかね。
486 : 「C言語 作った人」「C++ 作った人」で検索
487 : 情報系学科の出身でもない限り、最近の若いエンジニアはカーニハンやリッチーの名前を知らないんだろうな… リッチーは故人になってしまったし、J・マッカーシーも同時期に鬼籍に入ったんだっけ。 C・シャノンなんて歴史上の人物と思っていたけど21世紀になって他界したんだよなぁ。
488 : int i; などで作った?定義した?変数には最初なんの数字が入っているのでしょうか? #include<stdio.h> int main(void){ int a; printf("%d",a); retrun 0; } を実行すると2883044という数字が出てきますが、この数字はなんなのでしょうか?
489 : 環境にもよるが、 まあ大体の環境は変数の領域を確保した際に たまたまそのメモリに残っていた値だな
490 : 最初に何の数字が入っているか分からないからこそ何か仮の数を入れて初期化するという作法がある。
491 : >>488 変数を作る、というのは概念的な話で 実際はメモリのどっかの部分に名前を付けただけなんだよ。 だから、たまたまその部分にあった値が入ってる。 でもコード、コンパイラ、リンカ、システム共に同じなら 毎回別の値が出たりすることはあんまり無いと思う コンパイラやリンカ、システムごとのメモリの扱い方の癖がそこに出てくる感じ コードをちょっと弄ると別の値が出たりするからやっぱアテにしちゃダメだけどね
492 : >>491 このプログラムなら別の値が出る事は少ないだろうけど 現実的なプログラムだと大抵別の値が出るぞ
493 : >>492 そうか…現実的なプログラムだとまず試さないからな…
494 : JIS X3014が見られん(*1)ので記憶違いならすまんが 外部変数とstatic変数は初期値ゼロが保証されていて それ以外の場合は不定じゃなかったっけ? ちなみにauto変数は記憶域がスタック上に割り当てられるんで そこのゴミが入ってくるような気がします。 (*1) JISCでオンラインで規格書を閲覧しようとしたらAcrobatのバージョンを更新しろとポップアップが。 すでに最新バージョンにしとるのにどうしろと? (`へ´)凸
495 : C言語を作った人はデニスリッチーって分かったけど 結局、C言語の権利はどこが持ってるの?
496 : 言語の権利は誰も持ってないけど ランタイムライブラリの権利は各実装者が持ってる
497 : >>495 権利って著作権のことか? あるプログラム言語で書かれたプログラムは著作権の対象になるが プログラム言語自体が著作権対象になるかは知らん 小出しに質問してるけどいったい何が聞きたいの?
498 : 商標権かね まあまず何を聞きたいか具体的にしないといかんな
499 : >>497 言語自体もプログラムだろ
500 : >>499 言語仕様のことだろ
501 : C/C++のコンパイラとライブラリなどを自作したから、これを売って儲けたいとか、か?K&Rも知らない人間がありえねーー
502 : >>494 singletonの話なら、static変数は普通ポインタだよ。
503 : >>487 >J・マッカーシーも 10代の頃例の言語の卓越したアイディアに神をみた、というか20年たってこの歳になっても理解がまだまだおよばない可哀相な状態です。 >C・シャノンなんて歴史上の人物と思っていたけど21世紀になって他界したんだよなぁ。 ダイクストラも。
504 : LISPって、AIが流行った頃にもてはやされていたから わりと近年の言語かと思っていたけど、2番目に古い高級言語だったとは (゜Д゜)ポカーン コンピュータサイエンスが20世紀中頃から勃興した学問だから その頃に活躍された先生や技術者が、最近になって亡くなるのは 淋しいけど歴史の流れだよね… (ノД`)
505 : C言語の権利をどこも持っていないってどういうこと? JavaだったらSunMicrosystemsだと思うけど C言語は本当にどこにもないの?
506 : むしろ Javaがおかしい
507 : Sunはもうないけどそれは置いておいて... プログラミング言語の言語仕様を指して権利うんぬん、と言ってるのなら著作権の概念はないらしい。 http://oshiete.goo.ne.jp/qa/7862358.html 仮にもし、誰かが権利を主張するとしたら、リッチーの在籍していたベル研になると思う。 ところでなんでC言語の権利を気にしているの?
508 : >>505 まず「C言語の権利」が何を指してるか明確にしろってば 著作権じゃないんだろ?
509 : 言語仕様は著作権ないけど、 Sunを買い取ったOracle様がJavaのAPI仕様自体(API仕様書や実装ではない)に 権利主張してたよね。Androidの仕様を訴えてたあれ。 そんなもは認められないはずだけど、まだ完全には解決していないはず。
510 : 「 Java APIは著作権保護対象ではない 」 http://sourceforge.jp/magazine/12/06/03/2329238
511 : あれは権利ゴロの嫌がらせだろ
512 : プログラミング言語は工業規格(ネジ穴の大きさとか形とか)みたいなもんで、それそのものに権利を主張したりする性質のものじゃないよ。 強いて言えば規格を策定してるANSIのものとも言えるけど、それでも実装は個々のコンパイラ任せだし。 結局、C言語のコンパイラにはそれぞれ作者がいて権利を有してるけど、C言語そのものを持っている人は存在しない、ということになる。
513 : 基本情報やITパスポートで勉強するだろ ・言語仕様に著作権はない ・アルゴリズムに著作権はない ・コードに著作権は有る ・ドキュメントに著作権は有る apiの仕様そのものに対する著作権はわからんが apiのインターフェイスを記述したコードがあるならそのapiには著作権が発生する 当然第三者が勝手に利用したらアウト
514 : >>513 GIF はアルゴリズム特許で問題が勃発したよね
515 : 著作権や特許という概念が、まず邪悪なんだよ 足し算や、足し算の記述に誰かの物なんて権利はあるか?ないだろ それが当たり前なんだよ数学も物理もすべて神様が創造して、人間に与えたものだ 人間が新たに発明したから独占しようなどと考えるのはおこがましい すべての知識は平等に誰からも利用されるものだ 足し算が独占できないように、少し複雑化しただけの他の知識も独占なんかしてはならないんだよ
516 : うわぁ… 事実と理想が混同されてる
517 : 現実など糞食らえだ
518 : R・ストールマンに傾倒されている方ですか?
519 : ちなみに GIF の読み方は 「自負」 であって 「岐阜」 に非ず
520 : 俺は、コードが著作権で保護されて、ソフト会社がプログラムを売って金儲けするのに文句は言わないが ソフトに欠陥があってもメーカーとして免責されるという状況には疑問だな *PL法でカヴァーできないならソフトウェア専用の法律を整備すべきだ メーカーとして権利(著作権)を主張するなら、メーカーとしての義務(責任)も果たせよ、と言いたい
521 : すべてがFREEな世界に
522 : すべてがFREE FREEな世界に
523 : 結局、彼の質問の意図は何だったんだろう Cの参考書でも書くつもりなんかな プログラミング言語の権利を気にする、その理由に興味があるな。 煽りじゃなくて、さ
524 : うざいわ
525 : 法学部の学生かなんかで、ソフトウェアがらみの知財権か何かについて調べてたんじゃん?Dリッチーの名前すら知らなかったし。
526 : >>525 俺も法学部だったけどあの訊き方じゃそれは無い。 法学部で重視するのは「誰か」じゃなく「どんな権利か」だし、C言語だけにこだわる理由もない。
527 : >>526 > C言語だけにこだわる理由もない。 C以外のの言語には 【こだわってない】 という証拠は?
528 : >>527 他の言語スレをひと通り見てきて同じ質問がされていたかを見てくれは済むんじゃない? 別に俺の言いたいことはそこじゃないからこだわっていようがいなかろうがどうでもいいけど。
529 : 他の言語スレを見てないのに言ってやんのwww 語るに落ちてるよw
530 : 知的財産権のばあい、権利の種類および、 誰が権利を所有しているのか、も当然、重視される事柄だが. 本当に法学部?
531 : オマエらーー もう許してやれ
532 : >>530 その「誰が」ってのはあくまで概念上の話であって、具体的にCがどうのJAVAがどうのって話はしないよ。 ましてや権利の種類すら明らかにせず訊くなんてことは有り得ない。 少なくとも法学部のやる法学なら100%そう。
533 : ここに書かれてることをできるだけ詳しく説明して欲しいです。 http://cansecwest.com/slides/2013/DEP-ASLR%20bypass%20without%20ROP-JIT.pdf
534 : C言語から派生した言語はいろいろあるけと 全てデニスリッチーが作ったの?
535 : デニスさんマジパネェッス
536 : ケントンプソン涙目
537 : デニスリッチーが作った言語のはCとC++のみ?
538 : C++はビョーンスポッスポッ
539 : デニスリッチーが作った言語は C言語のみなの?
540 : >>536 ケントンプソンだってチューリング賞をもらってんだ なにも泣くことはあるまいw
541 : おRミルク出ちゃいましゅ!
542 : BCPL -> B -> Cだな。
543 : >>542 Cの次は特に無し?
544 : C → C++ → C# → D
545 : Java
546 : Javaもデニスリッチーなの? 神じゃん
547 : カプセル化は望ましいといわれます。 すると実務ではメンバ変数なら全てカプセル化するもんなのでしょうか? カプセル化はメンバ一つにつき2つアクセスのためのメソッド(読みと書き)を書く必要があり、めんどくさいんですが
548 : >>547 メンバ変数に煩雑にアクセスするんならクラスの設計を見なおした方がいいよ 読み書きするアクセサを付ける位ならクラスの意味ないじゃん
549 : >>547 やりたきゃやればいいと思うけど
550 : publicにしてもいいしな でも後から泣くような気がする
551 : >>547 メンバ変数が public/private に綺麗に分かれているという前提で public なメンバのみアクセッサを付けるというのがポピュラー C#とか rubyとか専用の構文を持つ言語すらある 特に setter だけでも作っておくとデバッグがもの凄く楽になる
552 : アクセサってattr_accessorとか@propertyとか書いてパッと作れたりしないんですか?
553 : ないよ ヘッダファイルにプロトタイプを書いて ソースファイルに関数実体を書くのが男の流儀だよ ヘッダに書いてインライン関数にしたりIDEの機能で追加したりするのも邪道 おれがゆるさない
554 : そもそも そういう無駄な設計技法を取り入れて実行時パフォーマンスを犠牲にするやり方は Cのお作法ではない JavaなりC#なりに移るべき
555 : いやむしろDに(ry
556 : >>551 publicは自由にアクセスできるのになんでアクセッサを付ける必要があるの?
557 : C++ならではの汚い文法だけど、特定の関数やクラスだけにfriendとして 公開する方法もある 大抵はこれで行ける
558 : 文法が汚いというか、設計が汚いね、それ
559 : friend は公開じゃなくて 1つのクラスをやむを得ず複数に分割せざるをえないような時に使うもの
560 : でもstd::ostresmやstd::istreamに渡す時はfriendにするしかないだろ?
561 : <<か。上の話とはあまり関係無い気がするが。
562 : まとめると デニスリッチーが作って今使われてる言語は C、C++、C#、Java ってことでOK?
563 : >>562 > デニスリッチーが作って今使われてる言語は > C、C++、C#、Java > ってことでOK? その文章だと、C++もC#もJavaも、リッチーが作ったという意味になる。そう理解してるの?
564 : 人に聞くばっかりじゃなくて少しは検索しようぜ。 wikipediaとかもあるわけだし。
565 : そろそろ目的を白状しようぜ!!! 大勢の人間がレスしてんだから、質問の意図ぐらい開示してくれてもいいだろう
566 : 白状しろとか怖い
567 : /. : . : . : . : . : . : . : . : ヽ /. : . : . : . : . : . : _,. -┐. : :| 貴 |. : 「`¨ ー-‐ j. : :! !. : 〉 〈. : :.│ 目 様 l. :ノ-―≧从r≦=― 、ヽ、 j 「V }丞{ }气rfミ 的 の Yハ.__ ,ノj ヾ、 ノ jら}》 ヾ {〈 r }  ̄ Lハノ は _ ⊥ _/ゾj__ ヽ 厂 / \辷_ヽ }l 入 何 / ヾ-く丿j / }\ | Y´ / / ヽ だ | ,∠ ̄ ヽ ├-ァく / l (廴 )/ l / \
568 : オイオイ あまりみんなで脅すと本人が萎縮しちゃって 言いたいことも言えなくなってしまうじゃないか! もっと優しく聞けよ! ん? 怒らないからオジさんに言ってごらん 恥ずかしがること ないんだよ ほら もうこんなに....
569 : だってとっくに本人いなくなってるし
570 : ポインタって動的になるの?
571 : ポインタによる無効なアドレスへの参照 >>1002
572 : ハイパーリンクつかないのか。チッ余計なことを
573 : 例えばmallocで帰ってくるポインタ(アドレス)は動的に変わりうるが 静的なインスタンスに対するポインタならプログラムの実行を通して不変だろう いまいち質問の意味がわからん 最近こんなのばっかり
574 : >>547 外部公開するクラスだけでいいよ
575 : ポインタってnewみたいに 動的って解釈で良いの?
576 : 意味が分からない問いには答えられない
577 : ポインタ自体は静的だな char *p; free(&p); なんてことしないだろ?
578 : SUCCEEDEDってif文の中の処理が正常に実行されたらif文実行ってことで良い?
579 : >>578 それはWindowsプログラミングにおけるSUCCEEDED()マクロのこと? もしそうだとしたら、HRESULTで調べてみて
580 : >>578 自分がぷろぐらむを書くんじゃなくて読むだけならそう思っておいていい
581 : >>577 最近教えていただいたネタ http://codepad.org/ChgEkuVs
582 : 何の関係があるのか分からん
583 : IOCCC的なネタだな。
584 : floatとdoubleの違いはなんですか? mainの中のfloatの部分をdoubleにすると、変な値が表示されてしまうのですが #include<stdio.h> void dprint(double d){ printf("打率は%fです\n",d); } int main(void){ float sum; printf("打率はいくつですか?\n"); scanf("%f",&sum); dprint(sum); return 0; }
585 : 1.0*10^38 ~ 1.0*10^-37 1.0*10^308 ~ 1.0*10^-307
586 : 自己解決しました scanfの中でdoubleで定義された文字を使う場合は%lfでないとだめなのですね
587 : @C++ 1.テキストの先頭に追記したいです 2.テキストの先頭文字を削除したいです ・やりたいこと test.txt aaa → bbbaaa test.txt abc → bc ・あまりやりたくないこと バッファに文字列を一度読み込んで,同じファイルに上書き再出力
588 : エラー耐性が高いのは、 別ファイルに出力して、元ファイルを消して、別ファイルをリネーム エラー耐性不要なら バッファに文字列を一度読み込んで、同じファイルに上書き再出力
589 : 一度読み込むと言っても全部読み込む必要はなくて 適宜上書き出力すれば良い 上書きしてもまだ読んでない所には上書きされないので
590 : ありがとう 素直に読み込んどきます
591 : 仕事ではやるなよ
592 : 普通は元になるデータを保持しておいて 適宜最初から書き出すとは思う
593 : intのバイト数って環境によって変わるらしいけど 何が原因でかわるの?
594 : ハードウェアの都合で
595 : 64bit版とか32bit版とか1度くらい聞いたことあるべ
596 : 一応 short≧int≧long ってなってるはずだけどな
597 : 逆だろう
598 : あ、ほんとだ
599 : あと、intはそのマシンの自然な語長にする、という規定があったような… 俺の勘違いかな??
600 : 8ビットCPU用Cのintは16ビットだった気がする
601 : さっそくの反例 ありがとうございます。 勘違い、失礼いたしました。 #CP/Mの時代か〜 俺の産まれる前だわ (←ウソ)
602 : いくらマシンが貧弱な時代でも 0-255 の範囲で整数型(キリッ などと考える馬鹿がいるものか
603 : >>599 合ってるんだけど、何をもって自然とみなすかは規定されてないんだよね
604 : 多分、CPUの一番使用頻度の高いレジスタサイズで決めるんじゃない?
605 : >>600 そりゃ規格でintは16ビット以上が 要求されてるからな
606 : >>604 64bit機でもint=32bitが一般的 レジスタサイズなどあくまで目安にしかならない
607 : >>606 それは win32api のソースを全面刷新させないための、つごー
608 : ちょっと!なに言ってんのかわかんない
609 : なにがわからないのかがわからない
610 : gccだって32bitなのに
611 : 糞プログラマーのレベルに合わせて 互換性を優先したってことだろ 文字通りの解釈しかできないアスペか
612 : >>607 x86 & Windows 以外の処理系もあるのに それは理由にならんだろ
613 : >>611 > 文字通りの解釈しかできないアスペか お前はWindows以外を知らないアスペねw
614 : x64 なんて後ろ向きの妥協の局地で動かすんだから 互換性最優先なのは当然だろ
615 : char=1,short=2から4を飛ばしてint=8にするのはおさまりが悪い short=4じゃ2が空くしな
616 : いっそ int2, int4, int8, int16 ってすればいいのに 将来 int3, int7が出てきても大丈夫w
617 : x64が64bitならx86は86bitじゃないの?なんで32bitなの?命名者馬鹿なの?
618 : 単にCPUの名前から由来してるからしょうがない Corei7とかもどこにも64なんてついてないだろ? そういうことだ
619 : x86 は 80x86 の略だからな
620 : >>616 処理系独自の拡張は既にあるよ。たとえば __int8、 __int16、 __int32、 __int64
621 : 文句があるなら IA64 を捨てた奴らに言え
622 : >>616 >int3, int7ってなんだよ もし作っても、メモリレイアウト上パディングされるだろ
623 : C99でint8_tとかint16_tとか追加されてるね
624 : >>623 それってオプションじゃなかった?
625 : least16みたいなのは必須でも 16丁度みたいのはオプションだね
626 : >>616 7bitレジスタのCPUは昔存在したはず
627 : CHAR_BITは8以上だから・・・ というかそのレスはバイト数の話だし
628 : intの違いはOSの32bit64bitだけなの?
629 : 間違えた intのビット数が変わる要因はOSの32bit64bitだけなの?
630 : 神様の気分次第
631 : >>629 コンパイラーを作る人の気分による。 コンパイラーは開発プログラム動作する環境の オペレーティングシステムを強く意識している。
632 : むかしDECのマシンでアプリを作ってた。 VAXからAlphaにマイグレーションしたんで、intが64bitなるか、と調べてみたら32bitだった。多分コンパチのためだろうけど。 intが64bitの処理系ってあんのかな。 PA-RISCやSPARCマシンは使ったことないけど、どうだったんだろう?
633 : ILP64は一応あるにはある
634 : 任意ビットのintが宣言でき、ビットフィールドのごとく配列にして使えるようになると便利かな CPUの制約は、この際無視w
635 : 使いどころが無いと思う
636 : operator 駆使して自分で実装すればいい
637 : #pragmaのいくつかをもうちょっと標準にしてくれるとか。 #pragma onceとか#pragma pack()とか。 あとendian関係とか。
638 : >#pragma pack() プリプロセッサーの仕事から逸脱してるし そもそも同等のことは既に標準化されてる >あとendian関係 ちょっと意味わかんない
639 : bswapは欲しい
640 : >>602 TL/1
641 : TL/1wwww 昔のPC板かよ
642 : そういやGAME/86ってのもあったな 記号だらけの言語 まあBASICの予約語を記号に置き換えただけなんだけど
643 : 月刊ASCII読者のOB会はココですか? ナノピコのコンピュータ世界の最前線が面白かった
644 : それよりbitのナノピコ教室がー
645 : 当時のCPUには当然FPUなんかなかったから浮動小数点演算は全部手書きだぞ あれで相当勉強になった これはアセンブラスレで書いた方がいいな
646 : 8087買う金がなかったんじゃないの? (* ̄ー ̄)y-~~~
647 : 要りもしないところに小数演算は甘え
648 : んーー 645はアセンブリ言語を使ってたんかな? MS-Cのばあい、FP演算には、87用、87がなくてもソフトで完全エミュレート、演算精度より速度優先、 みたいに幾つかライブラリを用意してたとおもう。 当時は(コスト的に)マシンにFPUがついてないのが当たり前だったからなぁ (遠い目…)
649 : 8bit CPU の話だろう そういや、FACCとかいってたねえ > ROM ふぁっく!
650 : >>646 8087馬鹿みたいに高かっただろ しかも遅いし あれで大学の研究室でマンデルブロ集合の絵描いたんだぞ FPUとは思えないほどの遅さだった >>648 ソフトウェアエミュレーションの場合FPUの全ての命令をエミュレート してるわけじゃないんだよな C言語で使う物だけ最低限入ってた
651 : coutの出力時に precisionで指定した桁数より下の桁は四捨五入されますが 四捨五入ではなく切り捨てで出力する方法はないでしょうか? double second = 59.9999999999997; cout.precision(8); cout << second <<endl; で 60 ではなく 59.999999と表示されて欲しいです。 (std::scientificではなく std::fixed で表示したいです。) お分かりの方がいらっしゃいましたらご教授いただけますと 大変ありがたいです。何とぞよろしくお願いいたします。
652 : >>651 stringstreamに一桁精度高く流し込んで一文字削ったら?
653 : >>651-652 stringstreamは流し込んだ時点でどうしても四捨五入されてしまうな double src = 59.9999999999997; src *= std::pow(10.0, 8); dst = std::floor(src); dst = dst * std::pow(10.0, -8); std::cout << std::setprecision(10) << dst << std::endl; 結局これしかうまく行かなかった
654 :2013/09/08 保守
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
【最速へ】LowLevelVirtualMachine【LLVM】 (608)
【消しゴム】MONOを使ってみるスレ4【じゃない】 (525)
.netグレープシティコンポーネント (151)
Ruby 初心者スレッド Part 52 (520)
C++は難しすぎ 難易度:4 (441)
HTABOXコア Part3 (703)
--log9.info------------------
モニタの歪みが気になって眠れない (104)
JPEGの後継画像フォーマットについて議論するスレ (136)
驕るなクリエーター、著作権は「5年」で十分w (177)
●JPEG2000(*.j2k)ってどうよ? . (578)
おまいらのPhotoshopマシンのスペック書け!! (654)
〓CG業界の現在・未来V〓 (628)
湾岸ミッドナイト in CG板 (122)
( ´_ゝ)流石だよな俺ら@CG板(´lt;_` ) (778)
■■ハリウッドのCGクリエーター■■ (195)
絵が可愛くて上手いHP (343)
MAYA (450)
■□ちっとも上手くなんねーよ。モデリング□■2 (118)
【御中元は】Elemental World総合・15【ハムに汁】 (918)
Mypaint Part 2 (542)
『西E田』妹でいこう!『神』 (792)
【遊友館】クリエイター通信? part1 (644)
--log55.com------------------
新潟人って陰険陰湿
百姓と言えば
新潟のNGT48に対抗して金沢は兼六坂46を誘致しよう2
新潟と金沢、どっちが都会? Part46
■札幌、仙台、広島、福岡■VOL460〜 封 鎖 〜
新潟市都市開発スレ137
■札幌、仙台、広島、福岡■VOL461〜 臨検2 〜
広島と岡山、どっちが都会?