C言語でgoto文を多用してますが、何か? ポインタの代わりに配列を多用してますが、何か?
コメント文にAAカキコして 「モナー」をよく書きますが、何か?
6 :
前スレの981 :02/11/09 03:23
地雷気づいて、立てようと思ったら、すでにたってた。
おつかれ
>>1 >> int div(int a,int b){ return a / b;}
>戻り値の取りうる値がすべて正常値の関数は普通、絶対にエラーが無いか、書かない。
じゃあ、この割り算関数どうするの?
文字列返す関数とかも、結構困る
絶対エラーがないって、どんな証明?
DQN PGは、コメントを英文で書くと文句言ってくる。 そんな奴等、逝ってよし。
>絶対エラーがないって、どんな証明? ちょっと勘違いしてた。寝る。
>>8 漏れも言いまわしが悪かったかもね。
「戻り値の取りうる値がすべて正常値の関数は、絶対にエラーが無いものでなけれれば書かない」
この例でどうしてもエラートラップしたい場合は、ERRNO を使うか、結果を格納する変数への
ポインタをもう一つの引数として渡して、戻り値は成功か失敗かを表すエラーコードにする。
関数の呼び出しをそのまま式の中で使いたい場合は、工夫が要るけどね。
>>8 気持ちもわからないでもないけど、もしそのソースを目にする大多数が日本人なら、
日本語以外でコメント書く方が DQN だと思うけど。
コメントって、読んで欲しいから書くんでしょ。
> 関数の呼び出しをそのまま式の中で使いたい場合は、工夫が要るけどね。 式の評価が全部終わった後に errno のチェックでいいか。 どうせその式はおじゃんになるんだし。
13 :
仕様書無しさん :02/11/09 04:33
うーん déjà vu どっかで見た光景
15 :
仕様書無しさん :02/11/09 12:12
おれも10に賛成 ゲームとか海外移植の可能性があるものとか 開発チーム、納品先に英語圏の人がいるならわかるけど。 コメントをいれる目的って点で考えたら10はまともな感覚だよ。 14はコメントで自己主張でもしたいのか? (まっ、俺は愚痴とか入れちゃうDQNだけどね)
16 :
仕様書無しさん :02/11/09 12:21
>>14 は国内で販売する日本語版のアプリの操作マニュアルや販促資料も
英語で作るヴァカです。
相手にしないように。
17 :
仕様書無しさん :02/11/09 13:28
情報システム部に所属しているんですが 社内向けの情報システムって動けばいいって感じのものばかりです。 1.クーロンからシェルプログラムが呼ばれる 2.シェルプログラムからプログラムが呼ばれる。 3.プログラムからシェルプログラムが呼ばれる。 4.シェルプログラムからプログラムが呼ばれる。 5.VisualTestのレコーダファイルでファイル転送 なんじゃこりゃ。
>>11 > 「戻り値の取りうる値がすべて正常値の関数は、絶対にエラーが無いものでなけれれば書かない」
ということはその関数内でエラーを返す関数は使用できないね。
それからエラーが発生するもので戻り値にエラーを割り当てるとエラーコードの管理が大変になるね。
単純に「関数内のどこかで何かがエラーになりました」ってだけを通知するなら簡単だけど。
> 式の評価が全部終わった後に errno のチェックでいいか。
良くない。式が副作用を持つ場合問題が起こる。
ちなみに例外があればこれらの問題はすっきり解決するわけだが。
エラーをエラーコードとして戻り値で返すのはやめたほうが良い。
> 直ちに適切なエラーコードを return すればいいだけだ。 > それとも、戻り値をチェックするのに不満があるのか? そのエラーコードを返す関数が自分のすぐ子だったらいいけど、 はるか階層の下の方でエラーが返ってきて、それをハンドリングする ルーティンがずっと上層だったら、エラーコードを上まで戻すために return だらけになって、ソースがボロボロにならないかい?
20 :
仕様書無しさん :02/11/09 18:18
COBOLみたいなVB COBOLみたいなC++ 郷に従わないソースコードを扱ったときが一番辛かった。 うちの会社には「ソフトウェア開発総則」というものが存在して これが何年も変わらず使われ続けているものだから もう腐ったものしか産み出されない。
21 :
仕様書無しさん :02/11/09 18:27
COBOLみたいなJava COBOLみたいなSmalltalk ワケワカラン。
戻り値の話まだやってんのかよ プロジェクトに一人はいるよなぁ どっちでもいいことにやたらこだわってるやつ どっちがいいのか議論するのはいいんだけど 結論を先延ばしされると工期がね・・・ と思いまちた
23 :
仕様書無しさん :02/11/09 18:49
>22 まったくだ。 あと途中参加の人間がそういうどっちでもいい問題で、 既に決まってる方針を壊してまで自己流でやろうとする。 統一感の無いコーディングじゃメンテも大変だろ。
24 :
仕様書無しさん :02/11/09 19:01
マジで切れそうになったのは、(Javaね) インデントがぐちゃぐちゃなソース うざいコメント if(なんちゃら){ … }// if(なんちゃら) #複雑なJSPの中ならありがたいんだが、普通のソースで書くなぁ。
25 :
仕様書無しさん :02/11/09 19:02
>>19 確かにreturnだらけになるけど、例外が無い言語なら、エラーが
出るたびにgoto,returnするしか無いよね。
極端な話、returnの数がエラー処理の厳密さのバロメータともいえる。
>>22 エラー処理は「どっちでもいいこと」ではないだろう。
そりゃ、「すぐ上で処理されるエラーを何を使って返すか」だったら
どうでもいいけど、すぐに処理できないエラーをどう扱うかは、
本来の処理以上に重要なことだと思う。
26 :
仕様書無しさん :02/11/09 19:11
>>24 インデントぐらい変換ツールでちゃんとなるだろ。
コメントなんて役に立たないやつは無視すればいい。
なにに怒っているんだ?
プロジェクトで一番いやな奴は、重要なことをどうでもいい事と勘違いして 何も考えてないで行き当たりばったりで処理する奴。 コーディングも行き当たりばったりで作ったりな。 今までよりも良い方法の提案を今までこれでやってきたからと無視したり。
28 :
仕様書無しさん :02/11/09 19:20
ソースの綺麗汚いなんてどうでもいいことだろ。 おまいらコーディング以外やったことないのか?
29 :
仕様書無しさん :02/11/09 19:22
実装フェーズの馬鹿は、どうにか回避する方法もあるけど、 設計フェーズ、企画フェーズの馬鹿はどうにもならん。 そんなモン今更作ってどうすんの?という仕様が降りてく ると萎える。脳内天国に篭ってないで、すこしは社会の 現状理解してよ。
>28 汚いソースの弊害はあるだろうにどうでもいい? それとも汚いソースの弊害が本当にわからない? どっちにしてもそうやって問題点をすりかえるやつ、 現場ではかかわりたくない人種の一人だね。
>>28 だれがソースが綺麗か汚いかの話をしている?
単純でバグが発生しにくくメンテナンスもしやすいソースを作るのは重要だろ。
コーディング以外。そういや設計でも単純にできることをやたら複雑にする奴もいるな。 あと話が複雑で長ったらしくて意味がわかりにくい奴とか一緒に仕事したくない。
>>32 その人の脳内でのみ常用している数個の単語を並べて
説明がすんだ気になっている馬鹿よりは、きっちり説明
してくれる方がましかと・・・
それができるのは、単語とそれが示す概念が打ち合わせ
の参加者全員についてきちんとリンクしている場合だけ。
>>33 そりゃ、そんな馬鹿よりもきっちり説明してくれる方がましだろうね。
そして、きっちり説明、それでいて簡潔にわかりやすい説明ができる奴が一番良い。
まぁまぁ、みんなまた〜りしようよ(´ー`)y-~~
コードみりゃわかるじゃんってやつも困ったチャン。 できる人だし、自分はそうやってできるようになったんだろうけど、、、 今の新人君たちはそれでは育たないのよ。 給料も人並みだから、あんま厳しいことゆうとやめちゃうし。 甘いのはわかってる。でも人が育たないとしたらその会社も問題だし。
ソースファイルにコメントで日記 氏ね
28=32 は、「このスレにおいて」 ソースの綺麗汚いなんてどうでもいい、なんて言うのか? 場の雰囲気読めず馴染めない DQN ケテーイ
>38 えっ、おれも?
>>39 イコールとハイフンを区別してくれ。プログラマらしくも無い。
41 :
仕様書無しさん :02/11/10 00:13
>>39 2ちゃん言語のソースも読めねーのかよ
28-32だったら30も含まれるが
28=32の場合は28と32限定だろ
42 :
仕様書無しさん :02/11/10 00:14
うっ!かぶった
わるかったよぉ、 ちょっとよぱらってるからみまちがえたんだよぉ(TT)
プロならまともなコード書かないとね。
コーディングの汚さを屁とも思わないPGは SEに昇格する資格あり! 卑屈になる必要無いさ。細かい事にうるせー 先輩PGをこき使ってやれ。 俺、自分の書いたDQN仕様書(自分で言うんだから相当な代物!)が原因で 外注PGを数人システム障害真っ只中の原子炉へ送り込んでしまいました。 本当は俺にも非があるんだけど、美味い事言って自分は行かずに済みました。 3ヶ月半に及ぶデスマーチの結果、5人の内2人が倒れて、結局4人も辞めて しまった。帰って来た時には「随分やつれたねー」と声かけたら 「後任者の○×と言う者です。よろしくお願いします」と来た。 PG達にはいつも済まないと思いつつ、自分だけは早く帰りたいので 仕様書の誤字脱字は気にしない。 仕方ないんだ。楽する為にその大半をVBAマクロで書いているんだから、 文章の内容まで一々読んでる訳無いでしょう。 あ、そのVBAも後輩に休日使って作らせたんだ。 だって、俺、Programまるで組めないんだもん。 原発でデスマーチしてたPG共が聞いたら、襲撃されるかもしれないな。
46 :
仕様書無しさん :02/11/10 00:25
>>43 素直で善し!!
>>44 その「まとも」が千差万別だからこその
このスレでは。
で、俺はというと
「一関数一ファイル、Makeは信用できないからオブジェクトファイル
を消して必ず全コンパイル」ちうプロジェクト
(ファイル数は5ケタを越えている)にて毎日4時間くらいコンパイルに
費やす日々を送っております。
47 :
仕様書無しさん :02/11/10 00:27
>45 まぁ、せいぜい30前後の若造ってかんじだが、 それでいつまでもうまくいくわけねぇだろ。 DQNはいつか切られるよ。 このご時世、DQNにいつまでもただめし食わせてるのんきな 会社はそうはないからな。
>ファイル数は5ケタを越えている うわーーーお! デスマーチな香りがプンプン匂う。
リアル厨房ウザ。
50 :
仕様書無しさん :02/11/10 00:46
お、30前後まで昇格させてくれて感謝! 今夜は少しオ・ト・ナになった気分。 だって、俺育ててくれたのは'93年入社の バブル世代なので、それはそれは大切に 育てられました。 俺みたいのばっか、この会社。 俺みたいな自称「脳内SE」の元に送り込まれて来るPG達には 同情と感謝の気持ちで一杯だ。会社もコスト節減の為に、 比較的人件費の安い層をSEにしちゃうんだよね。
仕方ない。本名名乗るか。 バス板に住んでる「八千代市民」っす。 自称「脳内バサー」兼「脳内ラリードライバ」兼「脳内SE」っす。 3つの才能に恵まれた幸運な男ッス。 顔は少しチャウチャウ似で、女性からはモテないんだなー。
Makeは信用できないから、という理由付けがテイスティだ
あぁん?VBは28=32でいいんだよ とか言ってみるテスト
>>54 どういう意味で言ったのか解説してくれないか?
ネタにしてもさっぱりわからん。
>>55 54じゃないが、VBなら=、Cなら==って言いたいんじゃないの?
そうだとしてもここでは関係ない話だが。
57 :
仕様書無しさん :02/11/10 03:02
このスレ削除依頼だそうと思ったレス (265)
168 名前:良レス無しさん 投稿日:02/11/05 23:16
伝統のまったりスレなのに
>>52 の様なレスを見た時。
つまり、「イコールとハイフン」を「==と=」と勘違いした ということ?
何が何だかよくわからないが、釣り師 54 の目論みは果たされたという事か?
え?漏れ釣られたのか Σ(゚Д゚;;)
>>17 つまり、「動いているものは触るな」って精神なんですな。
気になるなら時間の空いたときにでもソース覗いて短縮化してみますか?
走りつづけているのが情シスでは一番大事ですからな。
そうやってどんどんどんどんコードが雪だるま式に増えていきますがそれでもいいですか?
64 :
仕様書無しさん :02/11/10 14:24
>>63 「動いているものは触るな」は当然。
というか、絶対にさわってはいけない
神聖不可侵ってしらない?
ていうか、動いてるものには触るなってのは常識だと思うけど。 だからといってリファクタリングや改良ができないわけではない。
↑おそらくブラクラ
タダの広告だったよ
× BrowserCrasherChecker ver.0.19
--------------------------------------------------------------------------------
キャッシュを表示しています
対象 URL
http://www5e.biglobe.ne.jp/~nanko-m/ --------------------------------------------------------------------------------
安全な URL と思われます
危険な因子は見つかりませんでした。
南幸水産鰍謔阮ニ疫向上健康ドリンク『妙健』の御案内 天然メシマコブドリンク 妙 健 メシマコブは昔から免疫力を向上させる働きがあるキノコとして知られています。弊社ではその免疫活性力に注目し、抽出液を濃縮しドリンク化しました。 メシマコブの効能と、弊社メシマコブドリンクの商品説明を掲載しましたのでご覧ください。
「動いているものは触るな」をまったく実践させてくれない プログラムはもういやだーよ
HTMLで、いまだに、<option>を閉じない。 あと、先頭でXHTMLの宣言をしてるのに、要素名が大文字だったりすると萎える。 一応ブラウザは表示されるけどさ。
72 :
仕様書無しさん :02/11/10 22:52
動いてるコード書き直しまくってますが何か?
73 :
仕様書無しさん :02/11/10 23:42
>>72 それは本番運用が始まったものに対してですか?
テストはどのように行っているのですか?
(゚Д゚)ハァ? テストって言ったら、本番稼動させる事だろうが。
フィールドテストってやつですな
だれかログ保存してない? 金曜日に最後に見た前スレがもうDat落ち.早すぎるんじゃないのか・・・
78 :
仕様書無しさん :02/11/11 10:01
sscanf((sprintf(x, "%d", a + b), x), "%d", &c); 何がしたいんだか、、この後xは一回も使われてないし。
せめて sprintf(x, "%d", c = a + b); と書いてくれ・・・。
>>79 つうか、xを使わないんだから
c = a + b;
でいいんじゃないかなあと思いまつた。
'OpenArgsが"AddNew"であれば、新規に発注書を作成しる If Me.OpenArgs = "AddNew" Then DoCmd.OpenForm "新規選択", acNormal, , , , acDialog Exit Sub End If 'OpenArgsが"Open"であれば、発注書選択フォームをオープンしる If Me.OpenArgs = "Open" Then DoCmd.OpenForm "発注書一覧", acNormal, , , , acDialog Exit Sub End If
フォーム名を変数にするだけで随分スッキリするな。 でも、78 に比べたら全然マシだと思ふ。
VCで、 char *p = _T("hoge"); のような、_UNICODEを定義したら、コンパイルも通らない ような書き方があちこちあるよ。 (UNICODE対応はしなくていいから、べつにいいんだけど) サンプルコードとか見て、なんかわからないけどとりあえず _Tをつけとけって感じなのかなぁ?
TCHAR の意味を小一時間説教してやれ。
buckup sarch
86 :
仕様書無しさん :02/11/11 18:39
int hoge(char *arg1, char *arg2) { char buff[BUFF_SIZE]; memset(buff, 0x00, BUFF_SIZE) strncpy(buff, arg1, strlen(arg1)); strncat(buff, arg2, strlen(arg2)); return hage(buff); } こんなのウザいから 書きなおして下さいねって言っちゃった。 snprintf(buff, strlen(arg1) + strlen(arg2) "%s%s", arg1, arg2);
C言語って文字列の機能が貧弱だからレベルによって書き方にかなり差が出るよね。
>>86 そのコードだとstrncatもsnprintfも使う意義が全くないんだが。
つか、よく見たらつっこみ所満載じゃないか。 やめるやめない以前にそこでその関数呼んだだけで止まっちゃうだろ。
> snprintf(buff, > strlen(arg1) + strlen(arg2) > "%s%s", arg1, arg2); このコードって、strlen(arg1)+strlen(arg2) の長さが buff のサイズより大きいと バッファオーバーフローすんでないの? snprintfの第二引数って、バッファサイズ渡すもんだと思ってたんだけど。
今バッファオーバーフローによるバグがなくならない原因を見ました。
実際、困ったもんですな。
>>86 下のコードの方が「この会社辞めようと思ったソースコード」だろ?
あー。なるほど。
95 :
仕様書無しさん :02/11/11 21:21
>>memset(buff, 0x00, BUFF_SIZE) この初期化ははやっているのか? 正直文字列がわかっていないやつに文字列操作するPG書かせるときに多少保険をかけるためにやらせてるようにしか思えんのだが。
>>90 前橋のポインタ本に似たような事例が載ってたなあ。
97 :
仕様書無しさん :02/11/11 22:22
>>95 char buff[BUFF_SIZE+10];
とかってのもよく見るね。 予備燃料タンクみたいなもん?
98 :
仕様書無しさん :02/11/11 22:24
つか、配列の長さをチェックしてくれないCの仕様が糞
99 :
仕様書無しさん :02/11/11 22:26
>>98 んなもん知らねーよ。俺はそんなに賢くないんだ。てめーらで勝手にやれや。
お前等いつまでも他人をけなしてないで
>>86 の場合はどうやるのがいいのかちゃんと書けや。
102 :
仕様書無しさん :02/11/11 22:32
>>101 サイズに合わせてmalloc()でもしておけばいいんじゃない?
>101 逆切れですか? snprintf(buff, sizeof(buff), "%s%s", arg1, arg2); でええんちゃう?
104 :
仕様書無しさん :02/11/11 22:34
>>101 おらよ、厨房!
int hoge(char *arg1, char *arg2)
{
char *pBuf;
int nRtn=-1;
pBuf=malloc(strlen(arg1)+strlen(arg2)+1);
if(pBuf)
{
strcpy(pBuf,arg1);
strcat(pBuf,arg2);
nRtn=hage(pBuf);
free(pBuf);
}
return(nRtn);
}
あ、バッファサイズを可変にしろっつー話だったのですか…。(´・ω・`)ショボーン
>>104 ネタですか?
hageの仕様も知らないのにメモリが確保できないときに勝手に-1返すなよ。
>>95 まぁ、いいんじゃないの。
hage() が2個のヌル終端を期待する関数かも知れないし...
> strcpy(pBuf,arg1); > strcat(pBuf,arg2); ウプ
>>106 元のコードからいってバッファサイズを可変にする必要はないだろう。
snprintfなんていう環境依存な関数は使わせない
sprintf使えばいいじゃん。
113 :
仕様書無しさん :02/11/11 22:47
>>104 こんなのにいちいちmalloc使うなよ。遅くなるだろ
厨房を叩いている奴はやっぱり厨房な訳であり。
後々を考えると int hoge(const char *arg1, const char *arg2) が気分いいのだが...
>>104 > char *pBuf;
> int nRtn=-1;
> return(nRtn);
この辺もキモイ
117 :
仕様書無しさん :02/11/12 00:26
私が書くと int hoge(char *arg1, char *arg2) { _CString cstr; cstr % arg1 << arg2; return hage(cstr); } ※_CStringはMFCのCString似のもの % は operator= << は operator+=
>>117 激しくキモイ
C++にするならstd::stringでいいだろ。
なんでわざわざ、そんなまがい物を出すんだよ。
>>118 std::stringも使えるけどさ
std::stringにoperator+=みたいのないからなぁ
継承して作るにしても例外好きじゃないし(std::string例外吐くよ・・・ね?
なんとなく_CString始めは勉強目的で作ったんだけど
今でも十分使えるから使ってるんだよ
あ、間違えた operator+=じゃなくてoperator <<ね なんでstd::stringにsprintf()のようなものないんだ? あまり使われないからか?
>>117 まぁ、std::string使うかどうかは別にして
すっきりしてて見易いね、そのコード
>>120 stringstream
いや、フォーマット文字列の中身見て、引数チェックしてwarning
出してくれるコンパイラなら、snprintfも便利だと思うけど。
>>122 stringstreamか
こっち使ってみます
ありがとう
std::stringでいいような・・・。 int hoge(char *arg1, char *arg2) { std::string str; str.assign(arg1).append(arg2); return hage(str.c_str()); }
> std::stringにoperator+=みたいのないからなぁ > operator+=じゃなくてoperator <<ね そんなに使いたいならオーバーライド用意すれば。 つーか漏れはそうしてるし。 ついでに int とかからも受け付けると便利だ。
std::string& operator<<(std::string &L, char R) { return L += R; } std::string& operator<<(std::string &L, const char *R) { return L += R; } std::string& operator<<(std::string &L, std::string &R) { return L += R; }
>>126 それはオーバーロードだな。
125のやつはきっとちがうぞ。
>>124 ちょっと込み入った感があるね
そうでもないか…
明瞭さを求めれば117のがいいかな
俺はstd::stringは汚したくない(?)から 継承して独自にアレンジしようとは思わないよ std::string継承して独自にアレンジするぐらいなら 117みたいに独自の作ればいい 状況に応じて両方使いこなせれば文句もない
std::string が使える状況で独自クラスを用意するのは止めて欲しいんだが
std::string str; str = "abc" += "def"; //これはエラー (str = "abc") += "def"; //通るけどなんか嫌(w
>>130 他人に見せる(見られる)状況じゃないなら独自クラスでもいいんじゃない?
独自クラスの方がstring使うよりなにかしらのメリットがあるんだろうし
なきゃstring使え、だろうけど
私はゲームプログラムとか、MFCで文字扱うときは独自クラス
例外嫌だし、便利だし・・・・
仕事ではstringを使ってるよ
一応このスレは仕事での話ということになっているのですが…。
>>131 std::string str = "ABC";
str += "def";
つーか "abc" += "def" は、どんなクラスを書けば通るんだ。
>>133 脱線は許さないという strict なスレではなかったと思うけど…。
VBにおいでよ〜 str = "abc" & "def" なんて余裕だし str &= "ghi" もできるのら〜 とか言ってみるテスト 実際、VBの文字列処理は楽でいいっすなぁ
>>136 > str &= "ghi" もできるのら〜
普遍的にできるとは言えない。
正規表現がないと文字列処理はやってらんないよう。 Delphiの仕事うけちゃったけど、正規表現ないのがつらすぎる。 ついでに手軽に配列作ったりハッシュ作ったりできないのも。 evalもリフレクションもないから馬鹿正直にコードを並べるしかないし。
まてよ。リフレクションはあるか。まあ、あってもなあ… Apollo使ってみようかな。
VBで文字列コネコネするぐらいならperlの方がよっぽど駱駝。
>>136 >str &= "ghi"もできるのら〜
VBってこんな書き方できたっけ???
もしかしてオーバーライド出来るようになったのかも...
143 :
仕様書無しさん :02/11/12 13:51
昨日のレビューで見かけたソースの一部を要約したもの。 char *p = "hogedayo.hagejyanaiyo"; char a[ARRAY_SIZE]; memset(a, 0x00, ARRAY_SIZE); memcpy(a, p, ARRAY_SIZE); /* その後,str系関数にaを渡す */ こんな感じのソースを書いているのだ。 フツーは char *p = "hogedayo.hagejyanaiyo"; char a[ARRAY_SIZE]; strncpy(a, p, ARRAY_SIZE - 1); a[ARRAY_SIZE - 1] = '\0'; /* その後,str系関数にaを渡す */ 「こうじゃねー?」と指摘したが どうやら何を言いたいのか理解してもらえなかったみたい。
>>144 とりあえず、手元のVB6では無理だった
>>143 > どうやら何を言いたいのか理解してもらえなかったみたい。
そうだな。
どっちのコードでも
ARRAY_SIZE > strlen(p)の場合、未定義の動作をするような
糞コードを理解したいとは思わない。
嘘です。下のコードは正しい。 strncpyは > src の長さが n よりも少ない場合は、 dest の残りは NUL 文字で埋められる。 とかいう機能があるのを忘れてました。すいません。m(_ _)m
>>147 ふあぁぁぁ〜。偽者さん、うそついちゃだめよ。
何よりも、 > memset(a, 0x00, ARRAY_SIZE); があるのが痛い。
150 :
仕様書無しさん :02/11/12 15:36
あのんなあふざけいるなよ 韓国ががんばっているのだから良いではないか ふざけいんなここのやつら
さりげなく150Get
>>150 あっ!アホー
ふざけいるなよーーーーーー
153 :
仕様書無しさん :02/11/12 15:43
>>143 フツーは
char *p = "hogedayo.hagejyanaiyo";
char a[ARRAY_SIZE];
*a = '\0';
strncat(a, p, sizeof(a) - 1);
またはsnprintfが使える処理系ならば
snprintf(a, sizeof a, "%s", p);
/* その後,str系関数にaを渡す */
「こうじゃねー?」と指摘したいが
どうやら君には理解してもらえないみたい。
155 :
仕様書無しさん :02/11/12 16:16
あのんなあふざけいるなよ
韓国ががんばっているのだから良いではないか
ふざけいんな
>>154
みんな strlen(p)>=ARRAY_SIZE の時はエラーにしないか?
>>156 ここに居る房は、動的確保もできない連中ばかりだから、そこまで頭が廻らん
のだろ?
ストリーミングのように徐々に処理していくヤツだったりしない? もしくは、動的確保では速度が気になってしまう場所とか。
mallocした関数が責任持ってfreeしなきゃ
なんだかスレの主旨からずれてきているような気が… ここは「オレのソースは厨か?」だったっけ?
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | とりあえず、buffer overflow指摘したのはワシ。 \________ _______ |/ ∧,,∧∩ .目ミ ゚Д゚ ミ || (ミ ミ || ミ ミ〜 || ∪ ∪
164 :
仕様書無しさん :02/11/12 22:17
/ ̄ ̄ヽ l__T_i_ |ミ/ ・ ・ l / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (6 〈 / Jヽ〉 < 松井はメジャーでは通用しないよ!! |. Д| \_______________ |\__| ./´⌒` r‐-‐-‐/⌒ヽ ビシッ! |; ⌒ :; |_,|_,|_,h( ̄丿ヽ .|: ; : : : .| `~`".`´ ´"⌒⌒) .|; ; ; ; 人 入_ノ´~ ̄ l ; ;/ // /''
166 :
八千代市民 :02/11/13 01:00
snprintfって何? おせーて、おせーて。
asprintfの機能縮小版。 stringstreamの使い方が分からない可哀想な人、または 使い方が分からない人に包囲された可哀想な人のための関数。
C99で標準Cに取り込まれたのってsnprintfも含まれてなかったか?
>>167 asprintfはglibcローカルでは。BSD系のlibcにも流出してはいるが。
一般にはsnprintf相当物のほうが、はるかに広く認知も
実装もされているだろう。実際に、現在のCプログラムでは
snprintfはbuffer overflowを回避するための手段の
一つとして、strncatと同様に、非常に重用されている。
# もっともその移植性の無さのために、apacheのように
# snprintfの独自実装を用いているケースもしばしば見られ、
# どのみち独自にformatterを実装するぐらいであれば、
# asprintf相当のものを作るのも別に大した話じゃないのだが...
/*************************************** いっかいめ! ***************************************/
172 :
やむ@名無し :02/11/13 23:36
/*****ここからコメントアウト hoge(); hage(); /* 育毛剤注入 */ sage(); ここまでコメントアウト******/
>>172 そもそもコンパイルが通るのかと小一時間(略
174 :
仕様書無しさん :02/11/13 23:49
最近の話題は、 Java専業の漏れにはワカリマセーン
あ〜、どっかでネストしたコメントも正しく解釈するCコンパイラみかけたな どこだっけな〜
>>173 某H社製マイコンのメーカー純正コンパイラは、
“コメントのネストを許可する”なんてのがオプションで指定できてしまう
>>175 昔のMS-DOS用コンパイラにあったような気がする。
肝心の名前が思い出せん。
178 :
仕様書無しさん :02/11/14 00:30
昔なつかしいTurbo Cにはそんなオプションがあったと記憶している。
>>178 Borland C++ Compiler にもある
bcc32 -C
180 :
仕様書無しさん :02/11/14 00:46
Del厨なんで、コメント付きのブロックをコメントアウトするときは、 {}で括ってしまいますが何か。
#if 0 : #endif を多用してるのだが、 これをコメントとして解釈してくれるエディターって無いかな?
>181 その話、最近どっかで見た。このスレだったかな?
183 :
仕様書無しさん :02/11/14 01:07
>180 おまえはレンズマンに選ばれた。
hide-ifdef-mode
186 :
仕様書無しさん :02/11/14 09:12
某誌に某シェアウェアプログラマが載せたサンプルコード struct ffblk far *p; (中略) p += sizeof(struct ffblk) * 8000L; お前のシェアウェアには本当にこんなコードが入ってて まともに動いてるのかと小一時間(略
>>186 とりあえず、雑誌名とページ番号を晒せ!
なんか、ポインタ操作を全然理解してない証拠みたいなソースだね。 それでシェアウエア?
外注なんで辞めるとかなんとかじゃないし、 多分単なる俺の無知なんだろうけど。 人が作ったシステムの調査を命じられ、ソースを何気なく開けてみた。 ' 機能概要 :対象年月のMax日付を設定する処理。 というファンクションがあった。 どうも "312831303130313130313031" って値が設定してある定数を、一々分割して末日を取得しているらしい。 ついでにうるう年判定は400の倍数かどうかとか100の倍数かとか4の倍数かとかで 条件分岐して算出してる模様。 どちらも日付関数を駆使すれば取得可能だと思っていたが… M$の関数はそんなに信用ならんのか。
>>189 可能なら、下手にライブラリに依存せんほうがいいと思うぞ。
M$のその手の関数(日付や時刻、通貨など)ってロケール設定やら何やらに
依存しまくってるから、客がよく判ってないのにコントロールパネルの設定
いじったりすると、勝手にプログラムの挙動まで変わって、揚げ句の果てに
バグじゃないかとか言われたりするから。
うるう年に関しては、なぜいまだにBOOL IsLeapYear(int nYear)みたいな
標準関数が標準規格として存在しないのか、そっちの方が知りたい。
MSを信じるか外注を信じるかそれが問題だ。
192 :
仕様書無しさん :02/11/14 10:58
>>190 標準規格も何も、閏年なんか、
(year % 4) ? FALSE : TRUE
でいいじゃねーか。
どーせ、お前らの作るプログラム、2100年まで、動いてないだろ?
(2年前の教訓、全く無し)
そういえば2年前に年は0〜50の場合、2000年として処理をする。 51〜99の場合、1900年として処理をする とかいうコードをあちこちにコピペした記憶があるが、 まぁ、あと48年後には退職してるからいいか
194 :
仕様書無しさん :02/11/14 11:03
>>192 漏れのプロだといちおー2200年まで動くように
if( year != 2100)
を入れてるよ。
これはどうよ? private boolean isLeapYear(int nYear){ if ((nYear % 4) == 0){ if ((nYear % 100) == 0){ if ((nYear % 400) == 0){ return true; }else{ return false; } }else{ return true; } }else{ return false; } }
>>189 俺、ちょっと前にそういう定数直したよ。
6月と7月のMax日付が逆転してやがりますた…
Max日付は「西向く士(にしむくさむらい)」ですな。
ちょっと待った。 年月の Max 日付が変わってしまうようなロケールが存在するのか?
> うるう年に関しては、なぜいまだにBOOL IsLeapYear(int nYear)みたいな > 標準関数が標準規格として存在しないのか、 それこそカレンダーのロケール設定に依存しまくるからでは。 イスラム圏の暦とか。
他にもWin16でのポインタ正規化と称してこんなの書いてる。
(LPSTR)MK_FP(FP_SEG(p)+FP_OFF(p)/16,FP_OFF(p)%16)
そ れ は D O S 用 だ ろ
hugeポインタを知らないのかと思いきや、本文のほうには
「hugeポインタを使うか」とか書いてるし、ポインタの引き算は
((FP_SEG(a)-FP_SEG(b))/8)*0x10000L+FP_OFF(a)-FP_OFF(b)
ちゃんとWin16用になってる。わけわからん。
>>187 Cマガ1999年6月号の44ページ
また古い物を持ち出してきたな
>>201 わざわざスマソ。 でも、見たけどそれらしい(ってか44ページには)コード
らしきものは載ってないみたいだぞ。 144ページあたりにもそれらしいの
ないし。 いや、漏れもヒマだなと思ってみたり...。
>200 ていうか、暦の変換みたいなものこそロケールとかで対応しても 良さそうなモンですけどね。 標準的な暦って誰が決めてるのかな? 国連?
>>204 バーカ
首相が集まってジャンケンして一番勝った奴が決めてるに決まってんだろ
206 :
仕様書無しさん :02/11/14 16:52
首相と大統領がいる国って、どっちが偉いんでしたっけ? ていうか、両方いる国はズルいですね。
アメリカもフランスにも首相いるが 役割はちゃんと分担してるし良いと思われ
基本的には、大統領が首相を任命するので、大統領がエライ。
アメリカの首相って誰だよ……。
だから、注目されないけど仕事してるって 単に役職名が首相となってるだけで仕事は違う 詳しくは知らんけどね 日本で一番エライは首相、 雨ちゃんで一番エライは大統領、 ただそれだけ
>212 偉さの基準にもよるが、賢きあたりはどうなるのだろうか。
>209 大統領と首相って、CEOと社長、みたいなもん? つーか、CEOと社長の違いもよく分かってないんだけど。 >212 > だから、注目されないけど仕事してるって これ読んだ瞬間、電波を感じたのですが…。 アメリカには Prime Minister と呼称されるポジションは無いと思いまつ。 でも、この件に関して議論するつもりはないので、 あると言い張るなら、それはそれでいいです。
だから日本語にすりゃ首相だっつうの もとの英語忘れたからどうしようもない ホワイトハウスのHPあたり逝って調べりゃ分かるかも… って思ってみたが、1000人位指名されてて多すぎて分からん まあ良いか 電波と板違いスマソ
216 :
仕様書無しさん :02/11/14 19:32
218 :
仕様書無しさん :02/11/14 22:41
おいおいキミたち VBを使ってると女の子にモテモテだよ AccessとかExcelとかでVBA使ってる女の子に チョロチョロ、ペロペロって教えてあげるのさ もう、そりゃー神だよ、モテモテよ
>207 大統領は一般的に、国家元首。その国を代表する人物。 首相は内閣(行政府)の長でしかない。 日本の場合、国家元首はいない(規定がない)。慣例として天皇が国家元首 扱いではあるけどね。 アメリカは国家元首が大統領で、同時に行政府の長。
>207 大統領は通常、国家元首。国家の代表。 首相は行政府の長でしかない。 日本の場合、国家元首はいない(憲法に規定がない)が、慣例として天皇が国家 元首として(国際的に)扱われている。 アメリカは大統領が国家元首で、同時に行政府の長(=首相と同じ)。 国家元首と行政府長が一緒、ってのは例外的。 >215 そりゃ大統領権継承順位の話じゃないか? 通常継承順位第二位に国務長官(=外務大臣)がくるけど、ありゃ首相じゃ ないし、Prime Minister でもないぞ。Secretary of State だからな。
スマソ、書込み失敗かと思って二重書込みしちまった……鬱。
かなり話が脱線している様な雰囲気を醸し出していて良い塩梅です。
>>193 そういやその処理方法で特許取ってる雨の会社があって、(当時)これ
から権利主張して行くみたいなニュースを見た覚えがあるけど、その
後話出ないという事はさすがに却下されたんかな。
225 :
仕様書無しさん :02/11/15 00:04
>>199 和暦。
それにしても、年が 4 桁と仮定するのはよくない。すぐに 10,000 年問題が
起こって、そういったコードは恨まれるよ。
>>225 日本では「平成元年問題」があったのか。
対応してないアプリが存在するなら
今は昭和77年になってるはずだが
>>225 だいじょぶ、このコード3週間後にちゃんとしたコードに置き換えられる予定だから
恨まれないのだ。
それにしても、年が 5 桁と仮定するのはよくない。すぐに 100,000 年問題が 起こって、そういったコードは恨まれるよ。
7900年後ってどうなってるんだろ・・・ 紀元前6000年とかの絵のような文字が判読できるか出来ないかだから 現代を考古学する未来の人は困るだろうなぁ。 「磁気みたいな不安定なモノに頼った時代が分からない」 とかなんとか言ってそう。 ペーパーレスが本格化しだした時期からきっと空白の風俗史・民族史になるよ。 石版に日記書いておくと死んだ後有名になれるかもよ。
>>228 それにしても、年が 6 桁と仮定するのはよくない。すぐに 1,000,000 年問題が
起こって、そういったコードは恨まれるよ。
>>231 それにしても、年を 32bit で管理するのはよくない。すぐに 4,294,967,296 年問題が
起こって、そういったコードは恨まれるよ。
>>231 それにしても、年を 64bit で管理するのはよくない。すぐに 18,446,744,073,709,551,616 年問題が
起こって、そういったコードは恨まれるよ。
>>233 それにしても、年を 1,024bit で管理するのはよくない。すぐに 179,769,313,486,231,
590,772,930,519,078,902,473,361,797,697,894,230,657,273,430,081,157,732,675,805,
500,963,132,708,477,322,407,536,021,120,113,879,871,393,357,658,789,768,814,416,
622,492,847,430,639,474,124,377,767,893,424,865,485,276,302,219,601,246,094,119,
453,082,952,085,005,768,838,150,682,342,462,881,473,913,110,540,827,237,163,350,
510,684,586,298,239,947,245,938,479,716,304,835,356,329,624,224,137,216 年問題が
起こって、そういったコードは恨まれるよ。
・・・誰か止めてくれ。
宇宙の寿命からすれば64bitあれば十分じゃないの?
ちなみに、65,636bits にしたら 19,729 桁になりやんの。
65,536bits、デスタ・・・。鬱
ちなみに、4294967296bits にしたら 1292913987 桁になりやんの。
>237 ちなみに、4294967296bits にしたら 1292913987 桁になりやんの。
241 :
仕様書無しさん :02/11/15 04:13
ここはホームラン競争のスレになりますた。
年をunsignedで管理すると歴史学者に恨まれるのでよくない。
宇宙誕生から数えれば符号ビットはいらない。
まぁ実際問題として、1000年後のことを考えて 色々と細工したコーディングしてたら怒られるわけだが。
>230 三件目は、 「さすがアメリカ、首相官邸とは違うね」 だろうが。hitしたとは見なさない。
>235 おまいら、宇宙の寿命についてどう考えていますか
おまいら、お政治についてどう考えていますか
248 :
仕様書無しさん :02/11/15 08:29
> 1 April 1999
>>251 そういうのを「ネタにマジレス」という。
>226 さらにいえば、同じ年で元号が違う(A.D.1989=昭和64年(1/7 まで)=平成元年(1/8 から)) という罠がある罠。 きちんと元号に対応するのは無駄に面倒。
何を偉そうに・・・ データベースとか実際にどうやって実装しろと言うんだよ。 あのいかにも重たそうで格納しにくそうなフォーマットはお断りだからな。
いや・・・。 > 年月の Max 日付が変わってしまうようなロケールが存在するのか? つーのは、フォーマット yyyymmdd で変換かけた時に結果が変わってしまう ロケールがあるのかという事だったんだが、和暦って何か関係あるの?
#define MSG_TYPE_WORNING'W' これで「ワーニング」とかのたまわれた日にゃ。
おいおいキミたち VBを使ってると女の子にモテモテだよ AccessとかExcelとかでVBA使ってる女の子に チョロチョロ、ペロペロって教えてあげるのさ もう、そりゃー神だよ、モテモテよ
あ・・・「wearの過去分詞」とか書いてやがるよ・・・
260 コピペ age 荒らしウザイ
263 :
やっぱり最高 :02/11/15 16:21
Function years(appo As Variant) '勤続年数取得 Dim cnt As Integer , cntcale As Integer , calesu As Integer Dim tblcale(1 To 12) Dim Y As Integer , M As Integer Dim apmon As Long , nowmon As Long For cntcale = 12 To 1 Step -1 tblcale(cntcale) = cnt cnt = cnt + 1 Next Y = Year(Now) - Year(appo) If Month(appo) > Month(Now) Then apmon = Month(appo) nowmon = Month(Now) calesu = tblcale(apmon) M = calesu + nowmon Y = Y - 1 Else M = Month(Now) - Month(appo) End If Select Case 0 Case Y years = M & "ヶ月" Case M years = Y & "年" Case Else years = Y & "年" & M & "ヶ月" End Select End Function
年月の計算は、何か組み込み関数があった気がしないでもないが、それより For cntcale = 12 To 1 Step -1 tblcale(cntcale) = cnt cnt = cnt + 1 Next これが素敵。
265 :
仕様書無しさん :02/11/15 17:28
出向先で、srand の種を何にしたらいいかなーと向こうの人達が考えてたから、時間を与えたらどうですかと提案したら、時間が変更されたら、一緒だ といわれた。まぁある意味正しいのだが、システム起動時の時間を与えれば 種が一緒になるなんて事はほぼ起きないから、これでいいんじゃないかと思 いながらも、そこで引き下がってしまった弱気もの。 で、その人達が最終的にとった手段は、ネットワークのMACアドレスを種に。 ぉぃ、それだと毎回種が一緒じゃねーか! 確かに、それまでに、その場には馴染めなかったが。。。
> そこで引き下がってしまった ここが一番の敗因だな。 小一時間説得すれば良かったのに。
267 :
これで哲也 :02/11/15 17:56
if (a=2){ ・ ・ ・ }
>>268 でねーよ。
QACかければ、出るかも。
271 :
仕様書無しさん :02/11/15 18:28
>>265 重要な事を書き忘れてた、複数のマシンがサーバにアクセスしにいくため、
複数のマシン間で異なる値が必要だった。(サーバにアクセスにいく値が
各マシン間で一意な値が欲しい)
あるマシンから1度サーバにアクセスにいったのち、他のマシンが
アクセスしていない状態で、そのマシンを再起動したら、同じ値でアクセス
されるから。。。
まぁ、無事出向先から戻って来れたから、いいけど。。。
>>271 その場合、MACアドレス+プロセスID+アクセス時刻にしとけばいいんじゃないの?
ランダムにする必要があるのかを小一時間問いつめたい
>>272 MACアドレス自体固定だから、意味無いだろ?
Z80だとリフレッシュレジスタを種にできたのだが・・・。
>>272 だからアクセス時刻で十分。
上司がアホだったということで、チャンチャン
>重要な事を書き忘れてた、複数のマシンがサーバにアクセスしにいくため、 複数のマシン間で異なる値が必要だった。 ごめん、ならMACアドレスでいいよな。
>>267 定数との比較に限るが、
if (2=a) ならコンパイラ通らんから
if (2==a) と書いてる
>>276 その書き方きらいだ。マジでうざい。氏ね
VBでまでその書き方してるからな。マジで市ね
279 :
仕様書無しさん :02/11/15 22:50
CREATE TABLE( ... START_DATE CHAR(8) ...
>>277 そうか、×なのか・・・
これからは気を付けるから
×な理由を教えといてくれない?
>>278 組み込み専門なんでVBは知らん
>>280 理由?
俺は上のコードを読むとき頭の中では
「aが2のときは」って考えるんだよ。
なのに2==aじゃ
「2がaのときは」ってなって
ハァ?
ってなるんだよ。
まあ、個人的意見だがな。とにかく俺は嫌いだ。
>>281 言い方が悪いが、おおむね同意。
じゃあオブジェクト指向言語なら2.equals(a)と書くのかと。
最近のコンパイラならちゃんとWarning出すし、もう時代錯誤と言おう。
>>282 本物のオブジェクト指向言語ならそう書くぞ。
っていうか、思考に素直なコードで書いて欲しいってことで オブジェクト指向言語がどうとかは関係ない。 変な小細工しないでちゃんとデバッグすればいいじゃんってこと。
>>279 俺がやった前々回のプロジェクトもデータは全部 CHAR 型だった。おまえやる気
あんのかと。8 桁の日付文字列を SUBSTR で分割して || で連結した奴が○○
カラムの SUBSTR で +3 ヶ月した奴が… みたいなすげー SQL 書かされたよ。
でも思ったほどパフォーマンス悪くならなかった (DB2)。
>>281 ああ予想通りの回答・・・
昔ハマった事あって、それ以来ずっと習慣になってたが
今となってはたとえ間違えて代入しちゃっても直ぐに気がつくだろうな
は〜い、了解で〜す!
前はこういう個人的なこだわりから大論争に繋がっていたもんだが (m_ 接頭辞とか)、 みんな大人になったねぇ。
論争するほどこだわってるわけじゃないしな
自分はしないのだけど Java も皆、独自のスタイルを持っているの?
Java は Sun がコーディング標準出してるし、コアのソース公開されてるし、 C/C++ で甘かった言語仕様が詰められてるし、時代的に IDE (開発環境全般) も進化してるから、長くやってる人はそれほど癖がない。もともと m_ や 2==a ってのはコーディング上のうっかりミスをなくすための宗派でしょ。 んでも C/C++ や VB から Java に来たばかりの人はよく分かるな。お里が 知れるって奴か。
ふーむ、剛に従うか...
2==a とか m_var とか、回りにそんなコード書く人がいないから、一部の変な人だけが 使う書き方だと思ってたんだけど、そうでもないんだなぁ…と思いマスタ。 あ、社会人3年生です。
293 :
仕様書無しさん :02/11/16 08:58
2==aが大嫌いなのは同意。ただ、JAVAのString比較で "true".equals(someString) とすることは結構ある。someStringがnullであることもありうるときね。 nullチェックが省けるので楽したい時はこうする。
Javaのコーディング標準では、m_varと書くところってなんて書くんだ? _var? ちなみに、Delphi標準だとFVar
>>294 特にメンバ変数とローカル変数を区別するような命名はしないのが標準。
明示的にしたいなら this.var とやるし。
C#ではどうなってたっけ?
C# も同じだと思うが?
this とか self がある言語で接頭詞とか使ってたらできない奴だと思うな、俺は。
ハンガリアンでごめんなさい。
>>293 2==aが嫌いならJavaでもそんなことしないでくれ
後で他の人が見たときに、someStringがnullかもしれないから
こうしてるんだな。という、余計な思考が入るじゃん。
2==a と書く人間は a==b をどう書くのか知りたい まさか 0==a-b とかするのか?
>301 const int c=a; if (c==b) ... いや、脊髄反射的レスだが
>>304 そんな事に労力割くぐらいなら、if 文で == 書く時にもっと注意して書けよ。
>>298 まさかメンバ変数は全てthisもしくはselfを通してアクセスせいと?
だとしたら俺には
>>298 のほうが出来ないやつに見えるが。
>>306 明示的に使わなければいけない局面では this とか self 使えばいいじゃん。
言語仕様で用意されてる機能を使わないで m_ だの何だの付けるのは馬鹿だと思うんだが。
馬鹿の一つ覚えみたいに全部に this 付けろとは言ってない。
>>306 つーか、メンバ変数全てに this-> つけて回るのと、メンバ変数全てに m_ つけて
回るのとで、何の違いがあるんだ?
>>293 "true".equals(someString)ってな書き方は嫌いだな。
俺はこういうふうにしている。
1) パラメータのnull値を許容しない場合
/**
* @param hoge_arg "true" or "false".
* @throws NullPointerException hoge_arg is null.
*/
public void someMethod(String hoge_arg) {
if (hoge_arg.equals("true")) {
...
# @throwsの記述は省略することもあり。
2) パラメータのnull値を許容する場合
/**
* @param hoge_arg "true" or "false" or null.
*/
public void someMethod(String hoge_arg) {
if (hoge_arg != null && hoge_arg.equals("true")) {
...
常に"true".equals(hoge_arg)って書かれちゃうと、
書き手がnullを想定しているのかどうかが
わからなくなってしまうのが嫌。
そもそも、10文字程度のタイプをケチってどうする?
東大卒とか言っていちいちウザイプロマネが書いたソース for( ){ ループ処理 if() goto endloop ; } endloop : 終了処理 …………東大ではbreakを教えていないらしい。
310じゃないが、何でそうなるんだろう
ワラタ 良いセンスしてるな がんがってくれ
314 :
仕様書無しさん :02/11/17 11:02
>>310 別に悪く無いじゃん。どこが悪いんだ?
gotoの行き先がループのすぐしたにあるんだから別にいーじゃん。breakとかわらんだろ、いやむしろインパクトがあるぶんこっそりbreakを使うより見失うこと無いだろ。
breakが適当な場所にgotoを使うのは、現代では間違いだろ。 10年前ならいざしらず、な。
>315 私もそう思いました。 業界4年目のものでgoto使われていたのすらヨウわかりませんが、、 gotoは排除の方向で、、、
>>314 「こっそりbreak」って、何や? 中房がトイレで隠れて煙草吸ってるみたいな
もんか? 「普通のbreak」と何が違うのか教えてホスイ!
>>315 , 316
なにを根拠に言っているんだ?
だから無能だといわれるんだよ、チミらは
実は310は、8重にネストしたforを省略しているだけというわな。
gotoを使うなっていうのは幻想だ
つうかgotoはだめでbreakならいいというのは間抜け
プログラー
323 :
仕様書無しさん :02/11/17 12:12
if文、ループ文自体を限りなくなくす方向で
どうせ機械語になった時点でジャンプ命令ばかりになるんだから気にすることなし
325 :
仕様書無しさん :02/11/17 12:30
>>324 メンテしやすいかどうかが問題なんだろうが。
だからこそgotoを使うべきだといっているんだ。
個人的には、1段上に抜ければ済む話はbreak使ってほしいなぁ。 gotoは、もっとネストを一気に抜けるときにしてくれた方が、 プログラマの意図が見える分ソース読みやすいよ。
ただclassを使えばいいと思ってるのですか? 下手なclassはgotoに劣ります。
329 :
仕様書無しさん :02/11/17 12:39
2重ループ以上は禁止です。
>>328 誰もクラスとgotoの比較なんかしてないと思うんだが…
>>329 たとえ2重ループでも、中のbreakたどったら外のbreakだったら、
「ならgoto使えよ」って思うなぁ。
332 :
仕様書無しさん :02/11/17 12:51
int i; for(;;) { for(i = 0;i < 10;i++) { int x = rand() / 10; if(x == i) break; } if(i < 10) break; }
333 :
仕様書無しさん :02/11/17 13:05
>>277 前はやらなかったけど、今はその書き方してる。
関数名もパラメータの定数も長いのが多くなってきて、比較用の定数を後ろに書くと
何と比較してるのか、毎回ず〜〜〜〜っと後ろまで見なきゃならんからな。
334 :
仕様書無しさん :02/11/17 13:30
>>332 主旨ズレるけど、一応簡素化努力してみるテスト
int x;
for (;;) {
x = rand() / 10;
if (0 <= x && x <= 9)
break;
}
>>333 まあ、1回はやってみたくなるもんだな。早く帰ってこいよ
javadoc の @deprecated なコメントに オhル とだけ入れるのはよせ
>>332 ナニ犯りたいんか判らんが、
int i;
do
{
for(i = 0;i < 10;i++)
{
int x = rand() / 10;
if(x == i)
break;
}
}
while(i>=10);
でええやん。 むやみに「for(;;)」とか「while(1)」使うヤシ嫌い。
>>338 なにげに「犯りたい」がおそらく変換第一候補なのにワロタ。
340 :
仕様書無しさん :02/11/17 16:10
gotoの話ですけどね。 今のC言語の本にはもうほとんどかかれていないんですよ。 局面によってはbreakでなくgotoのほうがいいってのも、 それなりに納得はできるんですけどね、世の中の流れってのも それなりに汲みとってください。
gotoが駄目ってのは言葉狩りと同じなわけで、 どんな使い方も出来るから素人にはお勧め出来ないわけで、 玄人は使って良いのである。 と思います
344 :
仕様書無しさん :02/11/17 21:00
345 :
仕様書無しさん :02/11/17 21:06
vector<int> ((l)); //ハァハァ…(・∀・)マンコー
例外処理で、gotoを使えばすっきり書けるなら使います。 もっとも最近はC自体あまり使いませんが。
>343 で、玄人気取りが「自分にだけ分かりやすいコード」を書くんだね
insert into MAMKO; insert into MAMKO; insert into MAMKO; insert into MAMKO; insert into MAMKO;
drop from MYLIFE; commit; -- bye!
やぁ、ぼく変態押金さん(*´∀`*)ノ 最近就活忙しくてMMOでPKできないやヽ(`Д´)ノ ウワァァン!!リアルで人殺してぇ! 赤沼精和荘には勘違い帽子ヤローから場違いロッカーがうじゃうじゃと。 1206号室の浜ヲタが音楽を聞いている、もう我慢できん 一日中つんく家族聞いてんじゃねーよ、うんこめ 喧 嘩 上 等
>344 入門書はもう読まないけど。 数年前にこの業界はいったときにはgotoはいろいろと論争があって いまからあえて使う物ではないってくだりがあった。 実際、gotoを使いましょう的なほんがあるのなら紹介してくれ。 その後、gotoについて見直しがされたわけでもないので、 今から学ぶ人はgotoを使おうとは思わない。 その中の流れを無視して理屈ばかりこねるのはやりずらい人です。
354 :
仕様書無しさん :02/11/17 21:53
>>352 では具体的に何の本を読んでgotoについてかかれていないといっているんだ?
想像でものをいわないほうがいいぞ。
みんなはじめはそうだろ。 そいつらがgoto使わなければなくなっていくんだよ。
356 :
仕様書無しさん :02/11/17 22:01
>>355 意味がわかりませんが。
そいつらってだれですか?
goto使って流れが見えやすくなる可能性があるのであれば存在していていいのではあり
ませんか。私自身は
>>321 さんが言うように,ループの流れを乱すという意味ではbreakや
continueも気をつけて使わなくてはいけないし,だから気をつけてgotoを使うべき場面もあ
ると考えています。実際深いループから例外的に抜ける場合に,フラグとbreakの連続で
処理するよりも潔くgotoした方が読みやすくなる(逆にいえばgotoを使うのはそんなときく
らいしかない)というのは私がCを使い始めた頃からよく言われており,何度も活字で見て
います。それに対する有効な反論をまだ私は見たことがないので,あれば教えてください。
>>358 何ムキになってんの?
からかわれてるのがわかんないの?
いや,ネタはネタとしてわきまえてるからご安心を。仕事中の息抜きでぼーっとしてたので,素で返してしまっただけです。
>>359 さん
別に goto 使ってもいいとは思うが、ループ抜けるために goto は使わんなあ。 例えば一つの処理の中で、途中で処理キャンセルするけど、後始末はしなきゃならない場合 (正常処理でも最後に後始末はする)ってときなら、後始末への goto は許容する。 if 文でガードするのも無闇にネスト深くなるだけだし。
俺はCだったら if ((p = malloc(size)) == NULL) return -1; if ((fp = fopen(name)) == NULL) goto err1; 処理... if ((q = malloc(size2)) == NULL) goto err2; 処理... err2: fclose(fp); err1: free(p); return -1; みたいなコード書いちゃうなあ。ifのネストにしてもいいけど、 深いインデント嫌いだからさ。例外使えれば楽だけど。
>362 そのコード、イヤすぎ。
>>362 ヲレだったら
result=ERROR;
if ((p = malloc(size)) == NULL)
goto err;;
if ((fp = fopen(name)) == NULL)
goto err;
処理...
if ((q = malloc(size2)) == NULL)
goto err;
処理...
result=SUCCESS;
err:
free(q); /* freeは引数がNULLでも問題ない*/
if (fp) fclose(fp);
free(p);
return result;
だな。ラベルがたくさんあると見通しが悪いから、エラー処理のラベルは一つだけにする。
result=ERROR; do { if ((p = malloc(size)) == NULL) break; if ((fp = fopen(name)) == NULL) break; 処理... if ((q = malloc(size2)) == NULL) goto err; 処理... result=SUCCESS; } while(0); free(q); if (fp) fclose(fp); free(p); return result;
result=ERROR; if (p = malloc(size) && fp = fopen(name)) { 処理... if (q = malloc(size2)) { 処理... free(q); result=SUCCESS; } } if (fp) fclose(fp); free(p); return result;
p = malloc(size); fp = fopen(name); 処理... q = malloc(size2); 処理... free(q); fclose(fp); free(p); return 0;
どうでもいいが、
>>362 のコードはいつでも -1 を返すな
>>367 free(NULL) は問題ないけど、fclose(NULL) は SEGV するぞ。
>>366 最初のmalloc失敗したら、fpの初期化は行われないんじゃないか?
>368 美しいんじゃなくて手抜き…… >370 そのまえに fopen 後の処理で p に対してアクセスしてて、SEGV で落ちるだろな、普通……
375 :
仕様書無しさん :02/11/18 14:34
9 行スレはここですか?
∧_∧ ( ´∀`)< ぬるぽ
378 :
仕様書無しさん :02/11/18 16:46
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V´Д`)/ ←
>>377 (_フ彡 /
>376 必要ないよ。malloc も fopen も、失敗したら null ポインタ返すから。
>>379 mallocが成功してfopenが失敗する可能性を考えてから発言しような。
# p, fpはstaticかglobalな変数なら別だが
スマソ。 町がいた。 365 は fp と q が NULL 初期化されてないので駄目だね。 366 は fp の NULL 初期化が必要だわ。
間違えた。 p, fp 未初期化 ↓ mallocが失敗(p = NULLとなる) ↓ fopen呼び出されない(fp未初期化のまま) ↓ fcloseが呼び出される可能性がある(fp != NULLである可能性が高い) ↓ fopenしてないfpをfcloseする ↓ 未定義(マズー)
383 :
仕様書無しさん :02/11/18 17:16
p と fp が未初期化かどうかは不明なんだが、何を熱くなっているんだ?
>>380 staticでもglobalでも2度目通ったときにマズーだろう。
このスレにいると、バグがなくならない原因でおなか一杯です。
メシ代浮いていいじゃん
C言語==ゴーカート (C)祝一平
388 :
XG(XhosaGaiters) :02/11/19 14:38
intXG = CInt(Len(strPONum))
マチガエマシタ スミマセンデシタ
391 :
仕様書無しさん :02/11/19 15:33
392 :
仕様書無しさん :02/11/19 17:05
>>388 StringのLengthは最大が Long値の範囲だったとおもうが。
何に使ってる文字列変数かわからんが、CIntはまずいかも。
Timer1.Interval = 10
>>391 Len()は整数値以外何で返るんだとキャストをかました奴に小一時間問いつめたいんじゃないだろうか?
>>394 ……もはやVBコード自体がCOBOL並にイヤポでつか?
あるいはVBで10msecのインターバルなんぞ取るなゴルァでつか?
それともTimer1というデフォルトまんまな名前が……
あぁ分からん。
せめて、コメントで「10秒待つ」とか書いてあればわかるんだけどな
>>394 まあ、世の中には説明一切なしですべてを理解してもらおうとするアフォも多いってこった
>>396 2つ目が正解でし。
>>397 あ、あの・・・
Windowsで10msのインターバルは無意味という定石を知らんのですか?
しかも10秒は「1000」と書きます。www
10000じゃなくて?
うん。 1000.
>394 のように Timer1.Interval = 10 と書くと 10msec になるのに、 10sec を指定するのに 1000 となるのですか? ホンマに? どっかで1ケタ飛んでますか?
Winは奥が深いな(w
>>401 ごめん。
10000だった。(1000は1秒だな。w)
やめたくなるだろ?
こんなヤシが居る会社。w
思ったほど深くなかったか?(w
>>398 あ、あの・・・
10msが定石なのに、10と設定してあるソースを見て会社を辞めようと思うのは
一体どういうことなのですか?
10を設定してあるのに10秒待つ、と書いてあるのなら辞めたくなるのも
わかるけど、394は一体何が不満でここに書いたのか、、、、
と思ったけど、
>>400 でやはりアフォだということがよくわかりますた。
結構、深いかもよん♪
>>405 サソ
> 10msが定石なのに、10と設定してあるソースを見て会社を辞めようと思うのは
> 一体どういうことなのですか?
ごめんなさい。
言ってることが「全然・全く」わかりません。w
( ゚Д゚)y-~ 別に深くねーよ。
409 :
仕様書無しさん :02/11/20 01:44
>>395 一言注意して終わり、でいいんじゃないかと思ふ。
てか、これ実はC++でコンストラクタの部分というオチだったり...
ソースきぼん<定石
413 :
仕様書無しさん :02/11/20 11:13
char s[] = "ABCDE"; char *str; str = s; 年上:「↑をまとめて書くこと」 char *str = "ABCDE"; 私:「はあ?」
>405 Windows 9x 系列が保証する最低スライスタイムは 55ms。 NT3.1 で 16ms。 NT3.5 以降で 10ms。 だからそれより小さい値を指定しても、無意味ってこと。仮に >394 のソースで作られる プログラムが 9x 系列上で実行されたら、10ms 単位でタイマ起動する保証がない。 そもそも WM_TIMER は「とりあえず指定した以上の時間が経過しましたよ」って意味しか 持ってないから、間隔を期待してはいけないけどな。
つか10msが定石って何?初めて聞いたんだけど。
それより >Windowsで10msのインターバルは無意味という定石 が >10msが定石 に変化する過程を教えてくれ。意味かわっとるやんけ。
>414 勉強になります
実は、Timer1は、マルチメディアタイマだった。
> NT3.5 以降で 10ms。 なら、 >Windowsで10msのインターバルは無意味 にはならんのとちがう? それに、プロセッサってだいたい暇してるから、 だいたい10msの間隔で来るんでないの? いかなる時もきっちし10ms間隔で来てホシイなら また話も変わるけどさ。
自分のソース調べてみたら、SetTimer で 10ms 指定してるとこがあった ウィンドウができあがった後で最初に一度だけ処理したいことがあるからなので、 WM_TIMER ですぐにKillTimerしてるし、時間に意味は無いんだが なぜ 10ms にしたのかは今となっては不明だ…
タイマー値に 1 を指定しても 55 を指定してもさほど効果に違いが無いのなら、 10 と指定するのが何で DQN なのかわからん。 つまるところは 414 の最後 2 行に集約されてるけどな。
精度が欲しいんならパフォーマンスカウンタ使えばいいんじゃ
精力が欲しいんですけど
>421 10 と 55 だから問題が…… 極端な話、2000/XP じゃちゃんと 1/10 単位で計測できるのに、ME だとできないぞ! って トラブルが起こりうる罠。そういう用途で WM_TIMER 使う香具師が悪いのだが(w そういえば Windows XP だと WM_TIMER に絡む「497日問題」があったな……
すまそ、変だな。 「1/10 単位」→「10ms 単位」に謹んで訂正。
>>424 だからさ、
> そういう用途で WM_TIMER 使う香具師が悪い
という事がある限り、10 と指定するのが何で DQN なのかわからんのだ。
あと、497 日?
49.7 日なら聞いた事あるが・・・。
>426 MSDN KnowledgeBase で WM_TIMER で検索してみ。 一番上に出てくるから(w 察するに、10ms 単位でカウントアップする 32bit の内部カウンタがあるんだろう。 んでこいつがラウンドアップするのが 497日で、0 に戻るとタイマイベント自体が発 生しなくなる(0は使用していない、と扱うとかやってんだろーな)トラブル、と。 トラブル原因としては49.7日問題と同じってとこが MS の学習力のなさを表してい て ウマー ですな(w
おいおい、それってWindows2000では大丈夫なのか?? 激しく困るんだが。
>>427 ありがとう、これでまた 1 つ賢くなったよ。
ところで、↓ は?
> > そういう用途で WM_TIMER 使う香具師が悪い
>
> という事がある限り、10 と指定するのが何で DQN なのかわからんのだ。
反論が特に無いところをみると、単なる重箱隅と解釈していい?
>>419 ,421,424,426,430
Windowsで高精度のタイマーが欲しければマルチメディアタイマをつかうわけだが、
これはコールバックで呼ばれるんであって、WM_TIMERなんてメッセージは投げてこない。
そもそもそんなにリアルタイム性を要求するなら、マルチメディアタイマのコールバック関数から
さらにSendMessageなんて迂遠なことをしている暇はないはずだ。
(WindowsそのものがリアルタイムOSじゃないぞ、ってな議論はとりあえずおいておく)
WM_TIMERを10msの時間待ちに使うような香具師はMSDNを100回読み返せ。
あ、このスレの趣旨に添うなら、とっとと辞めれ。
>430 日本語読解能力が無いのか? 10ms間隔で処理が実行される保証が無いのにそれを期待して 10msを指定するならそりゃDQNってこった. あくまでそれを期待してってところな. 聞くが、10msと指定しても55msで動作する(かもしれん)のを承知の上であえて 10msで指定したいのか?なぜ?
>>433 なるべくたくさんアレをしたいから。
てのじゃダメ? 環境によっては一定時間にアレできる回数が増えるんでしょ。
>428 MS に何を望む? つか、XP って所詮 Windows NT 5.1 やん(w もし 2000 で問題ないならば、じゃあ XP でなんでそんなエンバグするかと小一時間……
>434 なるべくたくさん、なら Thread 使えって(w きっちりした時間間隔で何か処理したいならマルチメディアタイマを使え。 それ以外(てきとーに待つ、ぐらいの感じ)でなら WM_TIMER でもよい。 正直、一秒単位でさえ WM_TIMER だと遅れる危険があるし(特に 9x 系の場合)。
だから、てきとーに10ms待つのにWM_TIMERつかった香具師は DQNなのか、って話だろうが。
日本語読解能力疑われちゃったよ・・・。
>>394 からは、10ms きっかりを待つことを期待しているという前提が全く
うかがえないのだが。
だから、仮に 10 が設定してあっても、それをたちどころに DQN と決めつ
けるのはおかしい、と言っているんだってば。
434 の可能性もあるわけだし。
>>435 それが、起こるからこそMSなんだよん。 XP上のエクスプローラで「フォルダ」に
「読取専用」属性がセットできるか試してみろ。
2000でも「フォルダのみ属性変更するか、フォルダ以下の全てのファイルに属性を
適用するか」を聞いてきてちゃんと指定したとおりに属性を変更できるが、XPでは
これがなんと動かんのだよ、キミ。
漏れも、なんでそんなエンバグするかと小一時間問い詰めてやりたいよ。
(判らんのは、コードをいじった香具師もそうだが、何人と金払って雇った
テスタ連中がいったい何をテストしてたのかってこと)
440 :
仕様書無しさん :02/11/20 19:21
>>394 さんはそのソースを見て「この会社辞めよう」と思ったわけです。
つまり「Intervalに10なんか設定してあほだなぁ」と思ったわけです。
もし10msきっかりが欲しいのならどっきゅんだし、10msきっかりでなくてもいいなら後からソースを読んだ人を悩ませるような、必然性のない「10」の指定はどっきゅんだと皆さんは思っているのでは?
434だったら1msにすれば良いわけで。
あー盛り上がってますねー。
442 :
bloom :02/11/20 19:27
>439 そういやそだな(w どっちにせよ MS = DQN ということでよろしい罠。 まあエンバグは前例山ほどあるしなあ……NT の SP4 で直したバグ(っつーか お得意の「仕様」)が 2000 で復活してたりするし。
ファイルのフルパス入れる変数が strDirPassってなってたんだけど… いいのかなあ。
>>413 1-412/414-999 「はあ?」
448 :
ちょっと一言 :02/11/20 21:39
467 名前:コスモス 投稿日:02/11/20 11:46 理由その2: SQLが嫌いです。(というかSQLの存在意義って?) SQLというのはRDBを扱うための専用言語のようなものですよね。 さらに埋め込みSQLというものまであります。 埋め込みSQLはCやVBなどのプログラム中にSQL文を直接書けて、しかも変数 にselectの結果を代入したりできるという、話だけ聞くと非常に便利そうな機能に 見えます。 機能というよりメタ言語ですね。(笑) その埋め込みSQLですが、はっきり言って設計した人の神経を見たいです。 そもそもSQL自体まるでナンセンスな言語だと思っていましたが、埋め込みSQL はさらに輪をかけて。。。 ちょっと凝ったことをしようと思うとすぐ壁にぶち当たります。 誰が考えたか知りませんが、「お願いです。今後2度とプログラミング言語を設計 しないでください。世のため人のために。」(大笑)
E.F.Coddに言え>448
>>447 代表乙。
でも、1000 は入ってないのね。
>>440 最低でも 10ms以上待たせる必要があるから こう設定してる、
と好意的に現実的ではない解釈をしてみる。
ていうか、SQLをCみたいな手続き言語と比較してること自体がダメ。 SQLって要は論理代数でしょ。
>>439 そのバグって常に如何なる状況でも発生するの? たまたまじゃなくて?
もしそうならなんでテストを通過するの?
>>452 ネタじゃないのかなあ。
埋め込みSQLでどんな「ちょっと凝ったこと」をしようとしたのかは気になる
「適当な値」でいいところに10というマジックナンバーを 入れたのならその旨コメントしとかないと困るよね…。
>>455 それまずいよ。どう適当かと突っ込まれるぞ。
「いい加減」がいいと思われ。
良い加減ならいいじゃん。何が問題あるの?
>453 決まってるじゃないか。 「誰も想定してテストしてませんでした」 だよ。 んで問題だと分かると、「仕様ですから」の一言で黙殺。さすが MS。 #一度でいいから客に対してやってみたくはあるな。後先考えなければ。
あー、1日経ったら随分とタイムスライス盛り上がってたんですねー
すいません。
>>414 サマ
>>416 サマ
わかって頂いてありがとうございます。
>>416 サマ
正解です。
ソースコードの読解より、
>>405 サソ は日本語読解能力を
身に付けてください。
まぁ、何にしても50ms以下で、タイマを指定して、
客に「動いてます」って言ってたからさー
びっくりしたよ。マジで。
ちなみに
>>411 はわたしじゃないですよ。
粘着だなあ・・・・ 友達いなさそう
年齢を格納する変数 age のコメントが・・・
462 :
仕様書無しさん :02/11/21 05:51
>>448 お前はメタ言語という言葉の意味を知っているのかと小一時間…
448みたいな香具師がいる会社なら辞めたくもなる罠
>>448 > 「お願いです。今後2度とプログラミング言語を設計
> しないでください。世のため人のために。」
SQLってプログラム言語じゃないんだけど...
むしろ、SQLの仕様を統一して( ゚д゚)ホスィ
(・∀・)イヤダ!!
ヽ(`Д´ )ノ ウワァァァァァン マタクルヨー
ところで、誰か私に
>>413 の真意を教えてください。
>>468 確保されるメモリの違いでしょ。
char s[] = "ABCDE";
char *str;
str = s;
では char 型の配列(要素数6)と文字定数("ABCDE")と char* 型の変数
分のメモリが確保される。
char *str = "ABCDE";
では char* 型の変数と文字定数("ABCDE")分のメモリが確保される。
470 :
ちょっと二言 :02/11/21 11:43
472 名前:コスモス 投稿日:02/11/20 12:01 まとめ: Oracle以外データベース製品はたくさんあります。 にもかかわらずなぜみんなOracleなのか? Informix、DB2などなど。あ、SQL Serverは論外ですよ。(笑) なぜこれらの製品はそんなにシェアがないのか? 最近思うのは、もしかしたらこれらの製品はOracleよりももっとひどいのかも しれないと。。。(涙) データベース業界ではOracleが一番使いやすく性能も出る製品なのだと思い ます。 データベース業界はまだまだ未成熟な業界だと思います。 これを読んで、「そんなことないよ。Oracleっていいデータベースだよ」と思った あなたは、Oracleに洗脳されているだけではないでしょうか。
>>469 コンパイラによってはまずいことになるかもしれない罠。
とはいえ漏れもあまり意識したことはないが。
>>470 > Informix、DB2などなど。
なんでMy SQLとかPostgreSQLが出ないかな
>>471 char *str = "ABCDE";
を Read Only で使う分には問題ないでしょ。
書き換えた場合の動作は禿げしく未定義。
普通は
const char *str = "ABCDE";
とするような・・・
475 :
仕様書無しさん :02/11/21 11:57
>>413 すまん、俺もこの年上氏のように書いてる。
初期値が欲しいがポインタ型として確保して置きたいもの(引数とか)で使ってる。
これがダメってことは
while(*p++="ABC"[n++]);
とかもダメってことか・・・
476 :
仕様書無しさん :02/11/21 12:02
If Long_Maisu > CLng(30) Then MsgBox "枚数オーバーです。" Exit Sub End If 氏のう。。。
>>475 初めて見ました・・・
初心者にも分かるように、書き替えてもらえませんでしょうか?
hoge=COMPUTE(a,"+",b); なぁ、 hoge=a+bじゃダメなのか? そもそもCOMPUTEって何よ?
>>475 char *str = "ABCDE";
だと *str が書き換え可能かどうか判らん、て事を言いたいんじゃ?
>>477 char *abc = "ABC";
for (; abc[n] != 0; p++, n++)
*p = abc[n];
被ってんじゃん…打つだ篠。
>>475 while (*p = "ABC"[n++]); なら意味わかるが。
484 :
仕様書無しさん :02/11/21 13:12
>>483 それでは配列pには\0しかならないのでは?
配列でしたか・・・
つーか、そんなトリッキーな書き方辞めてください。
あ、ごめん配列って言葉は違ったかな。 でも*pが必ず'\0'になっちゃうような気がしたから
call timer timer: mov cx,0 loop$ loop$ . . ret だって、はぁ〜〜〜(アセンブラでスマソ)いやだ!!
>>489 for(timer = 10; timer; )
;
つーのもあるよ。
>489 はsageたかったんだろうか…
492 :
仕様書無しさん :02/11/21 14:58
>>413 これは、年上氏が上の三行を下の一行にしたという意味なのですか?
上と下が同じものだと思ってるなら、年上氏もちょいとアレなんだが、
・strを読み取りでしか使わない場合、下でOK。
・sを変更したいのであっても、strにポインタ値をコピーする必要は無い。
ので、どっちにしろ会社辞めるほどひどいコードではないような。
>>475 >>480 おまえらはなんでnを初期化しませんか。
特に
>>480 、おまえだおまえ。for使ってるのなら、
for (n = 0; abc[n] != 0; p++, n++)
*p = abc[n];
ってやりませんか。やりましょうよ。やってください。おながいします。
>491 そうです、sageのつもりが、、、 しかし、loop $ねぇ〜クロックかわれば、 ソース変更ってか!!
性能で言えば Oracle よりも Teradata の方がいいが。
>>475 ほか
も前ら、ネタはいい加減にしる。
while(*p++="abc")でいいだろが。
>>496 それじゃダメだ。こうしろ
while(*p++="abc"++);
まぁ487が正論を述べたわけだが。
n++["ABC"] でいいじゃん。
つーか、 char *p; strcpy(p, "ABC");
char *p; を書かなければ正解だったのに・・・。
セミコロン付きの while で、1 文字ずつも何もないと思われ
セミコロン・・・鬱
>>487 トレッキーな書き方ならいいですか?
# Beam me up!
トロッキーな書き方なら。 fromニュー速+
ケロッピーな書き方なら。 <!-- ゲロゲロ ゲロゲーロ -->
char *p; p=strdup("ABC");
p=coredump("ABC");
>>470 とりあえずDB2は鬱を加速してくれます。
ぶっ倒れてプロジェクトを抜けたい人にはお勧めの逸品。
p=Lotus("123");
Sybaseな俺…鬱だ
MDBですが何か?
GDBですが何か?
ADBですが何か?
dbmですが何か?
DQNですがな いや!ちがうちがう!! ネタだネタ!!!!!
>519 そんな謙遜するなよ
>>519 (・ロ・)ホ,('ロ')ホ--ッッ!!!…
,, -=-─=r-‐-、-、ニ"ニー-、 ,,
r-! ヽ'",,=ニニ-‐'''"``'''ー==ヽ`>'" レ、
i i. > `V i レ、
,r''''ヽ>,r' .,' ,. , , , ,. ,. ヽ, //, /
<,,____i,/ , ,' ,' ,' i i ,' ,'、_, ', ', '"、) ヽつ
/,/ !.,' .i ,'-ナフ',', ',. /i7'ヽi;''i、,. ! ',`'r-;'"
i,,,i i i ',.ヽi`'"' ` ` '"i ,'/ ! i ',
>>519 まあ、あなた
''"7'>iヽ',.-‐'''''' , '''''‐-i/i ',ヽ,,i`'
,/,/ /ヽ',. ┌‐┐ ./ノ ',
,,,_ /'、`、'-i. ヽ、,. '、_,ノ ,.r'" ,' _,r'7、_ _ DQN さんなのね♥
\\ '、 '、 >ー-,r'`'ー--‐''"/ ,r'/ / ,r''/
./ .>,ヽ,(`''ー,-'_,i``(,, i,,)',/ .,' ,;,,/-',// `、
/,,=''" ( ̄`)ー ',7,.i i i ,' ,' ,./ .,r‐''''")`=;;、 ',
/', ( ̄``) .)」 (_), / ,' i ,>‐''"ノ `=;',
.! /、 ,,...r'( ̄`' /、、,,_ i.i.i i i/ ', /"` /、. >'
i. i i \/ ,\. /`i``''=;'' ! `i.ii="!.''---'" .'、,_,r''".i
.! i '!. /i,'ー'''i `" ./ 'i : i"' ', ト、_. _/>, /i./
',i >/ `'"i '、,,,,__/. i ! ',,,_,,i iヽ;/,'i" i'
! `フ''''i )`'i i ! r-/ /;' i
マイルドに煽られているな(w
>480 コンパイルオプションで指定できたかもしれん。 まぁ、C言語って元々効率の為に安全性を犠牲にしてる言語だから わかってやってるんだったらいいんじゃない?
525 :
仕様書無しさん :02/11/23 08:58
★OJTにて先輩からのアドバイス strncpy() を使って文字列をコピーするとき、 直前にコピーした文字列の長さより短い場合は その文字列の長さ分、配列を進めないとメモリがおかしくなるから云々・・・ char buf[1024]; for (i = 0; i < 1024; i++) buf[i] = '\0'; /* ←★意味ねー★ */ strncpy(buf, "first", strlen("first")); /* process... */ strncpy(buf, "second", strlen("second")); /* process... */ buf = buf + strlen("second"); /* ← ★こうしないと★ */ strncpy(buf, "third", strlen("third")); /* ← ゴミがつくんだって★ */ /* process... */ みんなに啓蒙しています。こんな先輩をもって恥ずかしいです。
文字列バッファを毎回\0クリアする人がなんでこんなにあちこちに はびこってるのかしら。理由がヨクワカラン。
527 :
仕様書無しさん :02/11/23 09:04
>>525 だけど
>for (i = 0; i < 1024; i++) buf[i] = '\0'; /* ←★意味ねー★ */
このソースの場合だと必要だね。
文字列の終端に '\0'を付加することを知らない先輩の話です。
>>525 > buf = buf + strlen("second"); /* ← ★こうしないと★ */
bufは配列名だから左辺値ではない筈だが?
529 :
仕様書無しさん :02/11/23 09:09
>>528 ごめん。間違ってたね。
イメージ的には先頭アドレスをずらしていくやり方。
つーか、まず memset(buff, 0, sizeof(buff)); って書けよな。クリアしたいなら。>先輩 #core読む予感がする場合は、クリアしておく場合も無いわけではない。
まぁ
>>525 みたいな出鱈目な例は実在するわけだが。
で、藤原博文読んで感激して、バッファオーバーランさせると。
このスレで学べたこと。 藤原博文はネタじゃなかったということ。
534 :
仕様書無しさん :02/11/23 17:29
ミスター高橋 衝撃本 第2弾!『マッチメーカー』 関係者は激怒!「またか!!」 11月25日発売予定 定価 $1,400
535 :
仕様書無しさん :02/11/23 17:35
#define UNDEF NULL
536 :
仕様書無しさん :02/11/23 18:05
COMPUTE I=2. LOOP. COMPUTE I=3-I. GO TO LOOP.
>>528 たまにはそうではないと言い張るコンパイラも居るが、配列変数は左辺値だから
よろしくな。
536 のコードは一体何がやりたいんだ?
会社つーか業界脱出したくなったコード。 #define ERROR 0 (wingdi.h内) こんなよく使いそうな名前をdefineしっぱなしにするんじゃねーよM$。 おかげでenumのコンパイルエラーに30分頭痛めちまった。
541 :
仕様書無しさん :02/11/24 01:44
double a = 1.5; int i = ( int ) a + 0.5; として何で結果が1になったり2になったりするのか悩んでてしまいには コンパイラのバグのせいにする香具師がいる....
基本情報処理技術者試験を受けさせろ。
543 :
仕様書無しさん :02/11/24 01:55
>>540 ぐは。知らんかった。
しかもERRORなのに0ってところがまた…
MSのプログラマでもやっぱピンキリなんだな。
つか、レビューしてねーのかよ。
>>544 Win32APIみてみそ。たいていエラーはFALSE(==0)で示されるから、ERRORが0だと思われ。
例)WriteFile, ReadFile, っていうか、GDIならBitBlt、MaskBltとかいくらでも。
まあ、だからといって、そのdefineは肯定できないが。
でも、emun に ERROR なんて使うかなあ・・・?
スペルミス吊ってくる・・・
548 :
仕様書無しさん :02/11/24 06:02
すげー
>>541 1.5 も 0.5 も IEEE 浮動小数でそのまま正確に表せるのに 2 にならないの?
3 * (1.0 / 3) が1になるかどうかとかだったらあれだと思うけど。
・・・Intel の FPU が計算するたびに 80bit に変換するせい?
>>551 好意的解釈だが、1.5 は本当は定数じゃなくて、何かの計算の結果だろ。
それを四捨五入してる。
念のために聞くが、キャストと加算演算子の優先順位は知ってるだろうな?
>>553 言われてみれば(苦笑)
ただその場合は必ず1になりません?
>>554 > ただその場合は必ず1になりません?
逆に、これが1にならないコンパイラがあったら教えてくれ。
暗黙的型変換も考慮してくれ。コンパイル通んないよ。
558 :
仕様書無しさん :02/11/24 10:13
俺はガンダムでアムロの父親がアムロにこれをガンダムにつければパワーアップするってわたしたとき、本当にパワーアップするって信じてたぞ。 実はあれは本当にパワーアップする装置だったといまでも信じている。
559 :
仕様書無しさん :02/11/24 10:29
>558 「この会社辞めようと思った回路図」?
560 :
仕様書無しさん :02/11/24 10:43
>558 おれもだよ。 何でこわしちゃうんだ!?アムロ! って胸が痛んだのを覚えてる。
561 :
仕様書無しさん :02/11/24 11:03
昔いた会社で、その会社が数年まえに外注して受け取ったコードというのを 見て愕然としたよ。i, j, kがグローバル変数になっていた。推測するに、その コードを書いたヤシはN88-BASICあがりで、関数=サブルーチンという程度の概念 しかなかった。よって変数は、みなグローバルにするしかない。 もちろん、バグだらけで使い物になりませんでした。 こういうコードを出してくる会社も会社だが、そんなものを受け取ってしまう側は もっとタチが悪いと思ったYO。だから、資本金が8000万円あっても債務超過に なっちゃうんだろうな。
562 :
仕様書無しさん :02/11/24 11:11
>553 優先順位に左右されないコードを書くほうが可読性が高まることもあって 賢いやりかただと習いました。よっぽど処理速度を求められない場合以外は、 その教えに倣っております。
>>562 意味不明です。
優先順位と副作用を混同していませんか?
564 :
仕様書無しさん :02/11/24 11:26
優先順位でハマるのが嫌なので、必ず()で括るようにしてます。
可読性がよくなるかどうかは疑問だが、
567 :
仕様書無しさん :02/11/24 12:23
void Hoge(const char *p) { char c; c = *p++; | で、c = *p++ を「できない」と言ってくるバカタレコンパイラをどうにかしてください。
568 :
仕様書無しさん :02/11/24 12:28
>>560 技術者としては、理解できんでもないな。
自分が一番ガンダムのシステムに精通しているはずなのに、
突然親父が古い部品だけで上手にパワーアップサブシステムを
構築したんだから。
まぁ、親父で良かったよ、フラウが作ってアムロに渡してたら
アムロのプライドは地に落ちて発狂したかも。
569 :
仕様書無しさん :02/11/24 14:31
Gundam Seedが放送中ですよお前らども。 絵がどんどんアニヲタ向けになってきてるのは気にしてはいけませんよ。
>568 いや、俺幼かったから親父の頭がいっちゃってることに 気がつけなかった。 >569 気にします。 あんなの書かずに初代ののりで書いたほうがいいし、それで充分採算とれると 思うのは30代前後のガンダム世代だけですか?
Gandumだろ?
572 :
仕様書無しさん :02/11/24 16:40
オガンダムというのもあったな。
574 :
仕様書無しさん :02/11/24 16:44
GUNDOMですが何か?
3度の飯よりクソスレを愛し自他共にハードボイルド系クソスレ愛好家との呼び声もベリーハイヤーな俺の記憶が確かならば コロコロコミック屈指の名作キンタマンから生まれたオガンダムはサンライズからのクレームによりバカラスに解明された模様であり 単行本では登場からバカラスに改名されており今ではオガンダムの名を知るナイスガイは少ないと思われる
575 を略すと、3コロガンダム という事か?
どうレスしていいかわからん
579 :
仕様書無しさん :02/11/24 17:19
>>578 とりあえず、この会社辞めようと思ったソースコードを晒すべし。
急にブッ壊れて治ったら別の名前になってて 子供心ながらヘンだなあと思ったよ
>>567 関数の引数って変更できること保証されてたっけ?
constだし
Hoge(char *p) Hoge(const char *p) Hoge(char * const p) Hoge(const char * const p)
586 :
仕様書無しさん :02/11/25 08:47
まっとうな生き方をしてれば裏社会を知らなくても生きていけるように、 妙なコードを書かなきゃそんなことで悩む状況に陥らないと思う。 知ってて損は無いけどね。
587 :
仕様書無しさん :02/11/25 08:52
知識をひけらかすために特異なコードを書くヤシ 他人が迷惑するんだYO
>>588 それはふつう定型句として憶えてないか?
知識をひけらかすためのコード??
>>587 がDQNなだけの予感がするのだが
>>591 コボラーにとっては、Cのプログラムは全編「知識をひけらかすための
特異で妙な他人に迷惑をかけるコード」なんだな。
コボラーにとっては Cのポインタ自体が邪悪で許せないらしい。
コボラーかどうかはどうでもいいが
>>587 はなぜ知識をひけらかしているように感じたのか聞きたい
そんなことより
>>567 の何処に問題があるのか、知りたい。
コードには何の問題もないと思うし、漏れの使っているコンパイラでは
コンパイルできるのだが。
601 :
仕様書無しさん :02/11/25 12:52
コボラーは、 五感をゆさぶる大仕掛けで周りの人間の肝を抜いたスペクタルなコードを 独占的に書いている人たちなのです。
602 :
仕様書無しさん :02/11/25 12:54
>>601 レスつかなかったら可哀想だから哀れみのレスです。
598はプログラムは読めるけど、 日本語が読めない方ですか?
そんなのありかよ!
俺が扱える言語を得意な順にソートすると、日本語は大体6番目くらいか。
1: 宇宙語 2: ヲタ語 3: ロリ語 4: アニメ語 5: 電波語 6: 日本語
それ以前に、608のリストにプログラム言語が無いよ。
知らない人から見れば、プログラム言語は全て宇宙語という罠 もしくは英語
>>613 「扱える言語を得意な順」ってちゃんと書いてるじゃん。
君も日本語不得意そうだな。
>>614 ソートしたんなら大体って事はねーだろ!って意味だYO!
突っ込むんなら「ソート方法について聞きたいんじゃないの?」
ぐらい書けよ。
┐( -"-)┌ ヤレヤレ
>>613 ソート結果に必ず順位がつくと思っているんだな
1: A
2: B
3: C
3: D
3: E
6: F
ということもあるだろ
大体は最強やね
>>617 それと 「大体」 と何の関係があるんだ?
Dは大体4位 Eは大体5位 かな?
>>620 アフォですか?
同位の意味わかってる?
620 に則るなら、正確には 621 は間抜けではないという事か?
大体どうでもいいってことで
620 に則るなら、正確にはどうでもよくはないという事か?
大体、君たちは何を熱くなってるんだ。
何をって、607 のいいかげんさ加減。
620 に則るなら、君たちは何を熱くなっていないんだという事か?
「大体できてますよ」←仕事でこれ使う奴は信用しないことにしている。
620 に則るなら、できていないという事か? ・・・そのまんまだな。
631 :
仕様書無しさん :02/11/26 10:30
>>213 今までは、ショーとしてレベルが高くないものを「闘いですから」の逃げ道を用意して見せてきたって事。
プロレスは終わった芸能だって言うけど、終わったのは現存するメジャー一団体だけだから。
・プロレスはプロレス。これは嘘じゃない。
・プロレスは闘い。これも嘘じゃない。
・プロレスとは見る人を楽しませるもの。これも嘘じゃないね。
・プロレスは世界最強の格闘技。これは嘘。結局、これが嘘だってだけだから。
嘘に甘えてきたのはハッキリ言っちまえば一団体だけだから。そこがちゃんとやるかどうかだけ。
別に認めなくてもいいから、ちゃんとやればいいんだよ。本気で面白いのを。
___ ガスッ
|___ミ ギビシッ
.|| ヾ ミ 、 グシャッ
∩_∧/ヾヽ
| ,| ゚∀゚). .| |;, ゲシッ
/ ⌒二⊃=| |∵.
.O ノ %`ー‐'⊂⌒ヽ ゴショッ
) ) ) )~ ̄ ̄()__ )
ヽ,lヽ) (;;;;;;;;;;;;;;;;;)(_(
>>631
633 :
仕様書無しさん :02/11/26 12:52
>>631 今までは、PGとしてレベルが高くないものを「VB厨ですから」の逃げ道を用意して呆れてたって事。
VBは終わったPG言語だって言うけど、終わったのはVB厨だけだから。
・VBはPG言語。これは嘘じゃない。
・VBで簡単にPGが作れる。これも嘘じゃない。
・VBとは適材適所で使えば開発効率が上がる。これも嘘じゃないね。
・VBもろくに使えないプログラマ。これは糞。結局、これが糞だってだけだから。
糞にコードを書かせてきたのがこの業界の悪いところ。そこをちゃんとできるかどうかだけ。
別にVBあってもいいから、ちゃんと使えるやつを養成すればいいんだよ。本気で使えるのを。
今までは、OSとしてレベルが高くないものを「仕様ですから」の逃げ道を用意して呆れてたって事。 M$は終わった会社だって言うけど、終わったのはWinだけだから。 ・WinはOS。これは嘘じゃない。 ・Winは簡単に使える。これも嘘じゃない。 ・Winは適材適所で使えば作業効率が上がる。これも嘘じゃないね。 ・何でもかんでもM$製品を導入する技術者。これは糞。結局、これが糞だってだけだから。 糞に任せてシステム構築させてきたのがこの業界の悪いところ。そこをちゃんとできるかどうかだけ。 別にWinあってもいいから、ちゃんと使えるやつを開発すればいいんだよ。本気で使えるのを。
636 :
仕様書無しさん :02/11/26 17:53
//IDENTIFICATION DIVISION. //PROGRAM-ID. HELLOWORLD. 〜 省略 〜 //CONFIGURATION SECTION. #include <stdio.h> //WORKING-STORAGE SECTION char szHello[]={"hello World!!"}; //PROCEDURE DIVISION. //main SECTION. int main(void) { puts(szHello); return 0; } 死ね
そしておまえらはやめたのですか?会社
>637ハゲワラ
640 :
仕様書無しさん :02/11/27 09:57
int a[16]; for( int i=0; i<=16; i++){ a[i]=....... } デバッグさせられる方の身にもなってみろ……
641 :
仕様書無しさん :02/11/27 10:03
/* 親、親の親、親の親の親、親の親の親の親 */ PNODE p, pp, ppp, pppp; なんかの木を操作するコードでこんなん見て逃げたくなった。
>>640 16個程度で辞めたくなるよーじゃ、この業界向いてないな
a[2000], b[1500], c[500], i, i2, i3, i4, i5, i6;
とかいうのもザラだぞ
>642サン >640サンが言いたい事は i<=16 だと思うのですが、いかがでしょうか?
>642 個数の問題ではないと思われ。 int a[16]; なのに i<=16 の範囲だとi=16の時には・・・。 偶に問題無さそうに動く機械があるからますます質(たち)が悪いな でも、そんなのが当たり前にある俺の会社って・・・
if(n == a) { hoge } else if(n == b) { hoge2 } else if(n == c) { hoge3 } といった調子でelse ifが10連発とか15連発とか。 しかもa・b・cは定数で、かつ+1ずつ増えている。 え?もちろん辞めたよ。
>>641 >/* 親、親の親、親の親の親、親の親の親の親
最大4階層しかないんでしょうかねぇ
>>645 同じマシンでも動いたり動かなかったりする罠
>>640 似たようなコードで、
{
int a[16];
int n; /* <- これを消したら動かない */
みたいなコメントの入ったプログラムを見たことがある。
いま移植中のソースに以下のコメントがあった・・・ /* 仕様は○○様が決めました。○○月○○日のテスト時は正常に動いていました。 */ /* 私は何があろうと知りません。 */ おいおい・・責任持てよ前任者。
>>637 件のソースに、
ENVIRONMENT DIVISION
と、
DATA DIVISION
がないぞ。
COBOLすら極められなかった香具師だ。哀れんでやれ。
>>645 int array[n]; とした時、array[n] にアクセスしてもクラッシュしない事が
ANSI で保証されている。
(他の変数を壊すかも知れないが)
いっそクラッシュしてくれた方がバグ見つけやすいんだが・・・。
int msize; char* p; msize = (面倒な計算式) p = malloc(msize); if( p != NULL ) { strcpy( p, …… ); } というようなので strcpy で SIGSEGV。よくよく見たら msize が 0 になってたことが判明。 0byte の malloc で NULL 以外のアドレスを返す処理系なんて嫌いだ(この挙動は処理系依 存、って規定されてるし……)。
>>645 おいおい、16てベタ書きしてる時点でお前のほうがたち悪い。
そのアレイの上限をすべての工程で意識してない証拠。
>656 (゚Д゚)ハァ? >656 (゚Д゚)ハァ? >656 (゚Д゚)ハァ? >656 (゚Д゚)ハァ?
>>655 malloc(10);もNULL以外のアドレスを返すことは処理系依存ですが何か?
free(NULL);は何も動作しないことが規格で明記されているのには文句は無いんですか?
659 :
仕様書無しさん :02/11/27 13:01
>>655 msizeが0かどうかに限らず、mallocしてるサイズとよりも大きいデータをコピーしようとしている時点でバグだろ。
>>654 それはポインタが指せるってだけだろ。
アクセスしたらまずいだろ。
656って、変。
つうか、 #define MAX_A (16) int a[MAX_A]; for( int i=0; i<MAX_A; i++){ a[i]=....... } って書いときゃ、i<=MAX_A だと変なのに気付くよ。 言語仕様にもよるけどな。 a[]が、0〜MAX_A-1 までの範囲を取るのか、 0〜MAX_A までなのか、知らないとな。
>おいおい、16てベタ書きしてる時点でお前のほうがたち悪い。 >てつアレイの上限をすべての工程で意識してない証拠。 最近はローカル変数にまで、全ての工程を意識させる必要があるのか
666 :
仕様書無しさん :02/11/27 13:18
>>665 もちろんです。
三角形の内角を記憶する場合にもangle[3]と書いてはいけません。
>>665 つーか、それ以前の問題だろ。
645 のような説明を書く時に、数値のベタ書きがおかしいなんて意見が出てくるのが
おかしい。
>>666 あんた、645 のような説明を書く時、
#define ARRAY_SIZE 16
int a[ARRAY_SIZE]; なのに
i<=ARRAY_SIZE の範囲だとi=ARRAY_SIZEの時には・・・。
なんて書かなきゃいかんとおっしゃりやがりますか?
>>665 おまえ、自分だけがそのプログラム見るんじゃ無いことくらい、分かるよね。
で、いつなんどき、仕様が変更されるかも知れないのも、わかるよね。
>>667 数値が問題で無いのなら、なおさらそのほうが説明の要点が分かるってもんだ。
ま、この際、#define ... 自体は書かなくっても良いけどな。
>>669 なんでお前の頭の悪さに、こちらが付き合わなければならないの?
その程度も理解できないの??
672 :
仕様書無しさん :02/11/27 13:35
月や曜日ごとの集計するのにa[12]やa[7]をやっていいかどうかは迷うところです。
>>670 645 は 642 に対する突っ込みなのに、16 という数値を削除して ARRAY_SIZE という
未知の識別子を登場させるべきだとおっしゃりやがりますか?
>>672 おおいに迷ってください。
社会的な習慣が、いつどんな理由で変更されるかは、誰も分かりません。
676 :
仕様書無しさん :02/11/27 13:38
>>668 そうそういつ何時、三角形の内角が4つになったり、一年が15ヶ月になったりしないとも
限らないからな。
わかりやすく書いた方が言いに決まってる。 自分のミスを認めようとしないロートルが多すぎる。
頭の悪い奴らは、これだから困る
>>677 少なくとも、674 に書いたある事を実行するのはきっぱり 「わかりにくい」 と
思うのだが。
あなたがここでミスと呼んでいるのは、656 が場外れな指摘をした事を撤回しない
事でつか?
>>676 太陰暦(例えば昔の日本の暦)だと1年が13ヶ月ある
閏月とかいうものがあったらしい
大変でつ!! 01 ARRAY-SIZE PIC 9(2) VALUE 16. 01 ARRAY PIC X(ARRAY-SIZE). このコードが通らないのですがどうしたら良いでつか?
要するに、
>>640 の元を書いた香具師が馬鹿だって事だろ?
>>683 議論のすり替えはよろしくないですなあ。
ネタに使う為に、わざわざ書き起こしたコードなんだから、 そこまで突っ込むなよ……。 マジレスすまんね。
>>676 三角形の内角が3以外になる可能性は無いが、
同じ書式で四角形、多角形を扱う事が可能になる。
1年が何ヵ月かは、どんな事があるか分からない以上、何とも言えない。
687 :
仕様書無しさん :02/11/27 14:10
時間が10進数になる可能性とか。
>>688 10進化12進数、24進数、60進数ね。
690 :
仕様書無しさん :02/11/27 14:19
>>686 人類が滅亡した場合は時間の進行自体に意味が無くなるので
時間という概念がなくなるというケースも充分、考えられる。
それにも対応しとかないとな。
>>686 #define ANGLES 16
Triangle[ANGLES]
Quadrilateral[ANGLES]
Polygon[ANGLES]
つーことですか?
>>690 意味はあるだろ。
だいいち、そのソフトが動いてるんだろ?(W
>>687 Microsoft は既に浮動小数点数にしてますが?
ん? 10 進化 12 進数??
>>694 いや、「同じ書式で四角形、多角形を扱う事が可能になる」 の意味が本気でわからないんだけど。
698 :
仕様書無しさん :02/11/27 14:26
>>691 君は、リスト構造を覚える必要がありそうだね。
>>691 define で定義しちゃうと修正が必要になるので
ANGLESはプログラム起動時の引数で渡すようにしてくれ
もしくは定義ファイルから読むとか
700 :
仕様書無しさん :02/11/27 14:28
>>698 つまり、三角形の内角を記憶するのに、将来必要がでるかどうかも分からない
多角形にも対応できるようにリスト構造にしておけと?
つか、1年が13ヶ月になったときに、定数を直すだけで対応できたら デスマーチなんてものは存在してないと思われ 反論あるならしてみろやゴルァ!!
702 :
仕様書無しさん :02/11/27 14:31
>>697 配列の数を外部参照にすることで、繰り返し数が変更できるだろ。
704 :
仕様書無しさん :02/11/27 14:33
「1年が13ヶ月になったときに、定数を直すだけで対応できるプログラム」 を書くことは可能だ。 そう作ってないからデスマーチが発生する
>>702 Triangle の内角の数も、外部で変更できるようにすべきって事?
>>700 n角形で一般化したクラスでも作っておけ。
>>701 デスマーチが発生するのはそういう原因じゃないでしょ。
人材、特にマネージャクラスに問題がある場合。
おまいら、こんなところで晒す数行のコードで定数定義してないとか 突っ込む アフォ に付き合うなんて、よっぽど暇なんでつね。 仕事まわそうか?
おもろいスレはここですか?
>>705 Triangleの関数作って、Squareの関数作って ... n角形のn毎に関数作ってっから、デスマーチなんだろ?
>>710 冗長性はわかるが、その程度をデスマーチと呼ぶか?
どうでもいい議論にマジレスしつづけるスレはここですか?
>>712 n角形の関数をx通りの処理(回すとか並行移動とか・・・)いちいち書いてたら、天文学的数字になるわな。
(´-`).。oO(内角の数の話が、何で回転やに移動やらの話になるんだ?。。。)
ID欲しいな、このスレ
717 :
仕様書無しさん :02/11/27 14:56
「制御系・・・」スレにたかってた暇人が次のターゲットにしたのはこのスレですか?
テンプレートを使う事と、デバッグの事や保持と、何の関係がある?
>>722 つまり、
>>719 のようなC++を理解できない低級プログラマがいるから
C++は使うなということだね。
724 :
仕様書無しさん :02/11/27 15:58
>>723 「ポインタを理解できない低級プログラマがいるからポインタ使用禁止」に通じるものがあるな。
で、テンプレート使えと言う方向になった訳だから、 やっぱし、 配列のサイズはテンプレートに依存するって事で良いか?
726 :
仕様書無しさん :02/11/27 16:04
stlを理解できない低級プログラマがいるからstl使用禁止とはどういうことだコラ! そんなアフォは首にしろコラ!
>>722 だから、あんたには重大な問題かも知れないが、普通は関係無いって事だろ。
とりあえず謝っとく。 正直、すまなかった。
俺も謝っておく。 心の底からごめんなさい。
731 :
仕様書無しさん :02/11/27 17:53
>>730 この会社辞めようと思ったプログラマが上司に。
ここまで盛り上がったら>640も本望だろうよ、デバッグがんがれ
729 はともかく、728 が謝っているように見えない(w
じゃぁ、俺もとりあえず謝っとこうかな〜 ごめんなひゃい
オレは絶対誤らないぞ。
>>735 2ちゃんねるに書き込んでいる時点で人生を誤っていますが何か?
>>735 プログラマになっている時点で人生を誤っていますが何か?
それじゃ俺は射っとくか。今日は一人で残業だし。
流鏑馬をおやりになりますか?
人間に生まれた時点で人生を誤っていますが何か?
742 :
仕様書無しさん :02/11/28 00:08
>>719-732 CppUnit 等の xUnit で、テストから先に書くようにしよう!
>>739 738を見るまで読み方が思い出せなんだ。
りゅうてきば?
ウルティマだとおもうぼくちゃん。
やぶさめ
ごめんなさい。
>>750 そのときには、1年の定義自体が違う日数になってるかもしれないし、
そうでなくとも、確実にひと月の日数が変更だろうから、その辺も考慮して、
閏年の適応も変更される可能性がおおいにあるね。
その辺すべてをカプセル化しておけば?
752 :
仕様書無しさん :02/11/28 15:34
まぁ、実際問題としては、1年が13ヶ月になるかもしれないじゃないですか とか言う香具師がいたら、たぶんぶっとばされるわけだが。 そんなこと言ってる暇があったら、とっとと仕事しろ、と。
753 :
仕様書無しさん :02/11/28 15:38
>>752 2000年問題だって、そういう考えの奴らばっかしだったから、対応に追われたんだぜ?
元号が年に2回変わる可能性とか。
吉田VSフライ戦は八百長です。 ノゲイラVSセイムシェルト戦も八百長です。 某スポーツ新聞社のライターから試合前日に聞かされました。 シェルトは怪我をし、K−1を辞退。ホーストVSサップの再戦に。 というところまでどんぴしゃで聞かされました。 プロレスを八百長という気はありません。 しかし格闘技はどうでしょうか? 真剣勝負の中に、混ぜ物を入れるこの技法はなくならないのでしょうか? 詐欺だと思うんですよね。 悲しいですわ。
>753 必ずやってくる(きた)2000年と 1年が13ヶ月になるかどうかとは 問題の深さが違うと思うなあ。
#define for if(0) else for 必要性が分からない……
>>756 地球の公転も自転も、だんだん遅くなってきてるんだぞ。
>>757 わからないものを無理に使う必要はありません。
ところで、if(0) のあとに ; が抜けてますよ。
760 :
仕様書無しさん :02/11/28 17:32
>>756 マジレスすると、暦文化の違う国への対応とかに役立つ。
つうか、単なる一例だから、ロケール問題はさ。
だから暦文化の違う国向けにローカライズするのに #defineを書き換えるだけで対応できるのかと問い詰(パケロス
>>757 アセンブラソースになったときに意味ありそう。
・・・一度パイプライン切って、それからループねぇ・・・。
わかったような、わからないような・・・。
>>761 お前は #ifdef を知らないのか?と小一時間(ry
>>761 あのね、カプセル化って言ってるでしょ。
#define はキッカケ。
>>757 なんだろうね。759 の通りにセミコロンを付けるとして、それらしい効果を考えてもローカルなスコープを生む事位か?
例えば次のような感じ。j には999が入る訳だが...
int i=999, j=0;
for (int i = 0; i < 5; i++)
{ ... }
for (int i = 0; i < 10; i++)
{ ... }
j = i;
VCの古いスコープ仕様を回避するためだったような?
>>759 ,762,765,766,767
なるほど、きちんと意味があったのですね。
スレ違いでした(笑
VC7だと /Zc:forScope オプションですね。 でも、こっちがデフォルトじゃないんだよね。
すげーな、意味があるのか
というか、これをしなくちゃならない VC がタコなのであろ? 勝手にスコープ拡張するってのは……
M$独自仕様多すぎ。
>>771 勝手に拡張してるんじゃなくって、昔の仕様を引きずってるだけだな。
(昔のC++はこういう仕様だった)
確か今の正しいスコープでは MFC がコンパイルできなかったはず
>>774 懐かしいな、Visual J++ 1.0 のスコープもそうだったよ。
776 :
仕様書無しさん :02/12/01 14:40
金正日時代の朝鮮 名田隆司 (1999年)より 「金正日総書記は官職ではなく、全人民崇拝に基づく絶対の権威をもって革命と 建設を導いておられるのだ、ということである。 これは、類いまれな資質と実力、高い道徳と信義を体した政治的指導者でしか 表現できないし、二十一世紀を導くのは金正日総書記である、と断言できる。 二十一世紀は朝鮮の世紀となるだろう。」
777 :
仕様書無しさん :02/12/01 19:28
777ゲットさ  ̄ ̄ ̄∨ ̄ ̄ ̄ ∧∧ ( ゚Д゚∩ / ノ ΣムヘJ〜 シュタッ
(´-`).。oO(0x309 ゲットがそんなに嬉しいか。。。)
遊戯台専門組み込みPGですが何か?
むしろ遊戯台で遊んでる奴らに非国民と逝ってやってくれ。 収益は全て北に流れています。
負ければ北に送金だし、 勝てばヤクザの懐だし。 罪な遊びだね。
w = IsWindow( wndArray[0] ); if( w ) ::DestroyWindow( wndArray[0] ); w = IsWindow( wndArray[1] ); if( w ) ::DestroyWindow( wndArray[1] ); w = IsWindow( wndArray[2] ); if( w ) ::DestroyWindow( wndArray[2] ); こんな感じで、wndArray[14]まで、DestroyWindowしてるコードがあった。 「何でこんなコード思いつくんだよ、普通ループだろ。ifも妙だし。」 って思ってたら、以下のような記述が、コメントアウトされていた。 // for( int i = 0; i < 15; i++ ) { // if( ::IsWindow( wndArray[i] ) ) { // ::DestroyWindow( wndArray[i] ); // } // } ...何があったんだ...
784 :
仕様書無しさん :02/12/03 12:27
>>783 きっとそうしないとうまく動かないんだと思われ。
メモリが破壊されてるから。
printf(""); //これを消すと動かなくなる
とかと同じレベル(w
いや、デバッグ時に4番目あたりにブレーク入れたいためだけに 分離したんだよ、きっと(w
786 :
仕様書無しさん :02/12/03 13:21
ソースの頭にいきなり 「最適化しないで下さい。最適化すると正常に動きません。」 とかコメント書いてあった。
>>786 某CPU向けのコンパイラは最適化処理にバグがあったので
バグ発生条件を満たしているソースに「最適化禁止」という
コメントをつけたことある。
漏れが最適化のバグを見つけてもう3年になろうというのに、
いまだに最適化関連はbuggyらしい。>某CPU向けコンパイラ
790 :
仕様書無しさん :02/12/04 02:24
>>786 自分はARM用コンパイラを使って組み込み向けソフトウェアの開発を
しているのですが、同じように「最適化禁止!最適化すると動かなく
なる」というコメントを書いた記憶があります。
レジスタに連続アクセスする部分が最適されるとなぜかうまく動か
なかった。理由はいまだに不明。
>>790 おまえ、それは、volatileだろ。
>>791 いや、volatile宣言はやってた。だから最適化で消えてない
はずなんだけど・・・。
>>792 逆汗よめねーうちにコンパイラのせいにしてやるなよ。
「volatile」 と 「レジスタに連続アクセスする部分」 の関係がいまいち 分からないんだが・・・。
CPU依存のところは素直にアセンブラで書けばいいんでないかい?
そういえばフラッシュメモリにデータを書き込むプログラム作ろうとして 大はまりした事あったなぁ。 その当時volatile宣言も知らなかった漏れ。そりゃ動かんわい。 正しく厨房だったなぁ。
>>795 正直、スタートアップルーチンとか
アセンブラで書かないとしょうがない所以外はアセンブラ使いたくない。
>>794 この場合の「レジスタ」ってCPUの内部レジスタじゃなくって、周辺につながったデバイスのレジスタってことだろ。
メモリマップドI/Oだとレジスタアクセス=メモリアクセスで、それが最適化されると困るから volatile。
CPU レジスタの話じゃないのか、納得。
最近の組み込み用コンパイラは、 リセットからのスタートアップですらCで書けるよな スタートアップがアセンブラってだけで 会社辞めたくなる香具師が増える予感
そしてコンパイラを作れる人がいなくなるのでした。まる。
まる
ばつ
ぽよん
>804-806 辞めたくなるね…
808 :
仕様書無しさん :02/12/05 22:00
>>783 そうすると、ループがなくなるから、コンパイラの最適化が効いて、
少し速くなることがあります。
>>808 DestroyWindow() をそんなに高速に実行してどうするんだ?
自分で書いたソースコードの中に a = a; ってコードがあった。 自分では書いた覚えがないんだが、その部分のソースは俺しか書いてないし はて?
>>811 そのコードをコメントアウトすると動かなくなるんだよ。
>>811 それを取るとコンパイラに文句を言われるとか。
曰く「変数が使われていない」とか。
あるいは「変数が初期化されていない」とか(w
それを消すと封印されていた古代の怪獣が目覚めるんだよ
ロンギヌス
>>814 > あるいは「変数が初期化されていない」とか
a = a;
/~~~
その場合はこの時点で怒られるだろう。
ブレークポイント置きたかったとか?
論争がなくて詰まらん・・・
ごちゃごちゃ書いているのをすっきりさせたつもりで 結局「a = a」となってしまったとか。
>>822 高校数学の問題解いてると
よくそうなるけどな。
普通、最適化で消えるから安心してくれ
わざわざ最適化はずすんかい Σ(´д`;) > a=a;
volatile int a; a = a;
あ、Cはvolatileなんてのがあるのね。便利ね。
829 :
仕様書無しさん :02/12/07 18:59
タイミング調整か、ブレークポイント置きたかったのか・・・ こういうコードにこそ、コメントが必要なんだな。
社員の忠誠心を試しているようなコーディング規約
831 :
仕様書無しさん :02/12/08 04:01
すさまじく嫌な所で忠誠心が問われているな・・(;´Д`)
グローバル変数の接頭辞に 「NecIsBest_」とつけること。 ...とか?
FujituuIsKuso_ ってのもありそうだね。
>>832 グローバル変数を使う奴が劇的に
減ったりしてな。(ワラ
835 :
仕様書無しさん :02/12/08 23:24
>>98 だから速度が一番はやいんだよ。アホでは使えないC言語ってとこだろ。
>835 おいおい、>98はもういないと思うぞ。
>>835 もの凄い遅いレスだな。誤爆かとオモタヨ(w
「速度」 が 「はやい」? えーと・・・
839 :
仕様書無しさん :02/12/09 10:32
速度が重い。
速度がぬるぽい。
コンナトコロニモ
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←
>>840 (_フ彡 /
842 :
仕様書無しさん :02/12/09 11:15
中途で入社したばかりだけど、 この会社の新人の作ったやりっぱなしのシステム引継ぎ中・・・ やる気無し あまりにひどい。一応本社のSEは内容確認したらしいが・・・
>>835 C言語ができても日本語ができないんじゃな・・・
言語ネタで日本語を持ち出すやつはたいがいクソ。
845 :
仕様書無しさん :02/12/09 11:49
世の中にはここに上げられないような恐ろしいソースコードが、 社会にとけこんでいることを忘れてはならない。
そのソースコードを書いたヤツも 社会にとけこんでいることを決して忘れてはならない。
そしてそういう恐ろしいコードが、知らぬ間に 漏れらの身体にもとけこんできていることもなるべく忘れてはいけない。
それが汗と共に染み出しPG特有のえもいわれぬ体臭を放っている事を忘れてはならない。
そうしてその体臭がPCに吸い込まれ、 次に使うことになった新人にしみいっていくことを忘れてはならない。
850 :
引き篭もり :02/12/09 15:12
>>845 そうなの?
2chが最底辺だと思ってヨ
>>850 基本、ここに出てるのは数行〜数十行で伝わる糞コードのみ。まだまだ小技レベル。
DQソ には「コピペ大量生産」という技が残されてまつ
というネタでつ
>428 Windows Update かけたら、Windows 2000 でも同一の問題が発生していて、 修正パッチが上がってましたな……ご愁傷さまです。 やっぱ MS、悪い期待は裏切らんな。
うげ、名前欄間違えた。 失礼>426氏 私は 424 であった……鬱だ……
856 :
仕様書無しさん :02/12/09 20:24
857 :
仕様書無しさん :02/12/09 20:48
今思い出したけど、この497日問題って、Linuxでもあったんだよな。ドライバだけど。
(゚д゚)ヌルポー
859 :
仕様書無しさん :02/12/10 00:51
>>851 コピペ大量生産ならかろうじて読めるような気がするが、
何回読んでも意味のわからない、
「ああ、もしかし俺、頭悪くなったのかな…、
もうSE/PGやってちゃ駄目だね、そろそろ廃業かな…。
どれどれ、とりあえずテストしてみっか
…
…
…
なんじゃゴルァ!!!」
と思わせるソースコードが巷にあふれていることを忘れてはならない。
> なんじゃゴルァ!!!」 と思わせるソースコードが まさにソレがコピペ大量生産されてる罠
861 :
仕様書無しさん :02/12/10 00:57
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←
>>858 (_フ彡 /
>>818 ところが何故か怒られなかったりする事も...遅レスだが。
>>863 コンパイラのバグか、そもそも未初期化変数の使用を警告しないかのどちらかじゃないの?
>863 ワーニングがうるさいから全部抑止してます、だったりして……ありそうだな。 そーいや二年ほど関った案件(案件自体はさらに1年以上前から動いていた)で、1年半 くらい経ってようやく、Makefile のコンパイルオプションで警告抑止されてた、ってのが 発覚したことあったなあ。 試しに全警告許可したら、山のように出てくるんだ、これが。 それも「プロトタイプ宣言されてません」なんてのが(爆) いやあ、よく動いてたな、 あのシステム……
かもしらん。ありゃ何やった時だったかな...
そのコンパイラはピー○の奴なのでマニュアルがなくて-Wallする
オプションがわからなかったんだっけか。
個人ではgccに-Wallするからそれはないんだが。
コンパイラくらい買うなりgcc使うなりしれ > 社長
# もうすぐ転職するし、もう知らんけどよ。
>>865 #includeがないとか...
そういや洩れが今の会社に勤めて2年くらいした頃に見たソースで、
ヘッダを作らないで.cの中でexternな宣言したりしてたな。
結局そのスタイル?は洩れらが駆逐してやったのだが、つまり現勤
務先はそのくらいDQNだったってワケだ。それでよくライブラリとか
売ってたよなぁ(当然の帰結としてつい最近まで在庫がイハ゜ーイ)
そういや、どこで見たんだったっけか? #include "hoge.c" ってやつ
>867 学校にて独学でC始めて3週間の頃それやってたです 6週間目で駆逐しました 分割コンパイルって一つの壁だったなぁ・・ 流石に業務で見かけたら「ゴルァ(゜Д゜#)」だけど
なんか小物の再利用するときに #define main _main #include "hoge.c" #undef main って普通じゃない?
普通じゃない
>>869 あーこりゃさすがに辞めようと思うかもねー。
>866 そのとおり。#include 指定がない、だけならまだしも……インクルードするべき ヘッダファイル自体が存在してなかったんだな、これが。 だからすべての関数が「int func()」と同じ扱いという怖い怖い世界であった。 引数チェックも戻り値チェックも機能しねえ(爆) たまにヘッダファイルがあると、関数宣言全て extern 付き…… #普通 #ifdef 使って二重定義防止するだろ……
>>872 あいたたた。そりゃ痛い。
しかし、初期のK&RでC勉強してそれ以降は勉強してないとそうなるかも...あなおそろし。
866の補足:在庫は「捌けた」のではなく「捨てた」のだった(w
main() の入ってないのなら、#include "hoge.c" する事はある。 Makefile 作るの面倒で、コマンドラインでファイル指定するのも面倒な時は。 仕事ではやらない。
#include "hoge.as"
HSPかよ!
さらにこの話には続きがあってな。 ある関数の下部関数(その関数からしか呼ばれないため、同じソースファイル内でのみ 有効であればいい)なのに、なぜかヘッダに定義があるんだ(w 必要なヘッダ定義がないくせに、無用な定義はあるという……痛いだろ?(w あとで関数一覧(ライブラリ一覧)を顧客に提出するときになって、ようやく発覚した この事実……いやもう、どうしてくれようかと……
878 :
仕様書無しさん :02/12/11 21:31
ライブラリ一覧を顧客に提出する運びになって幸せだったな。
>>877 げらげら。いてぇよぉ〜。痛すぎるよぉ。
つーかスレタイ通りという他ないかも。
でも、構造体とかはどうやって?
まさか、ない。とか...カ゛クカ゛クフ゛ルフ゛ル。
880 :
名無し@沢村 :02/12/11 22:35
銀行のATMにアクセスするプログラムの書き方 //ネットワークに流れるデータを受信する recive(data); //データがATMのときは if(data==ATM) //1億円を自分の口座に振り替える。 sendmoney(100000000)from(anybank)to(mybank);
>879 幸いにも、構造体なんかはシステム全体で使うんで、別のヘッダファイルで きちんと定義していたよ。 ただ、このヘッダファイルに #ifdef による二重定義防止がなかったりして やっぱり痛かったりするんだが(w
882 :
仕様書無しさん :02/12/11 22:38
あ、ごめん。要はこういうのの事。 #ifndef HEADER_TAG_XXXX 〜定義部〜 #endif 別に #ifdef〜#else〜#endif の括りでもいいけど。
定義部の中には当然、 #define HEADER_TAG_XXXX の一文が入っているので、ツッコミ勘弁。書き忘れた。
俺は#ifdefが必要になるなんて設計ミスじゃないかと思うんだが、 それは俺がおかしいんだろうか?
886 :
仕様書無しさん :02/12/11 23:26
まぁバカヨケだしな。
>>885 ケースによると思われ。
それから、881のケースとは違うけど、
#ifdef DEBUG
/* デバッグ用コード */
#endif
とか使わない?これも設計ミス?
バカヨケと日本語でいうとすげー棘があるな(藁 ヘッダ内でほかのヘッダを読んだりし始めると、 #ifndef〜がないとやっていられなくなるね。
漏れらが日常お世話になってるライフラインの制御システムとか、イージス艦の司令システムとかでも、 きっと物凄いドキュソが絡んだ絶望的なコードだったりするんだろうね、本当のところは。 そんなものの上に成り立っている社会。そんなものの上にでも成り立てる社会。 世の中っていい加減にできてるもんだよなあ。
>>889 たとえコードが無茶苦茶でも、テストの網羅率を十分に上げてやれば
まともに動くシステムが出来上がる・・・と、この板のどっかに書いてあったな。
このスレを見てると無人島で原始人生活をしたくなるな(w
891 :
仕様書無しさん :02/12/12 02:53
>>867 プログラマ勅諭其ノ壱が「1ファイル1関数」な今の派遣先では、
サブシステム毎に必ず"XXX_main.c"がある。
その内容は豪華なファイルヘッダと、それに続く
#include "XXX0000.c"
#include "XXX0001.c"
#include "XXX0002.c"
:
の行、行、行。
俺「どうしてこんなことするんですか」
客「こうすると、コンパイル時間が速くなるんだ。
覚えておいた方が良いよ。MakefileにもXXX_main.cの分だけ
書けばいいしね」
俺「(-_-)ウツダ」
892 :
仕様書無しさん :02/12/12 11:06
全部のソース・ヘッダ、多重インクルード関係なく VC++用の全ヘッダを読み込もうとしている某社のドライバ コンパイルエラー特定できんくなくからやめれその思考
893 :
ふく猫の運転手 :02/12/12 12:56
>>891 そのMakefileに
XXX_main.c: XXX0000.c XXX0001.c XXX0002.c …
という記述があるのかが気になるなぁ
無いならそのMakefile腐ってるし、有るなら「XXX_main.cの分だけ」って主張は間違えてるし…
>>887 そういうことなら変じゃないね。俺が言ったのは
多重定義を避けるためにifdef使う事について。
>>881 ほっ。
でもそうすると構造体はヘッダに置くのに関数はアレというのはどういう事だろ。
既に思考能力が...
>>885 ヘッダから別のヘッダを#includeしてるとか、マクロを書き換える時とかに使う。
#ifdef HOGE
#undef HOGE
#endif
#define HOGE HUGA
みたいな。
>>889 きっと成り立っているように見えるだけなんだよ。
あるとき何の脈絡もなく「アルマゲドンモード」に突入したりとかさ(怖
>>891 モジュールスコープなシンボルはどうやって作るのだろう...
って、やっぱり...グローバル?
897 :
ふく猫の運転手 :02/12/12 17:10
898 :
ふく猫の運転手 :02/12/12 18:17
>896 つまり、 ・巨大なシステムで、その中で基盤部分と各サブシステムごとにチームが分かれてる ・基盤部分が全体のデータ構造も担当する(でないと各サブシステムに渡せないから) わけ。 基盤チームが構造体定義はやっていて、それを全チームが使っている。基盤はベースの ライブラリも提供するから、関数定義もする(関数定義は構造体定義とは別ファイル)。 なんだけど、各サブシステムでは「自分達のつかうヘッダ」をまともに定義してなかっ たというオチ。もっとも、基盤ライブラリで >877 をやっているあたり、もお怖い怖い。
>>899 そういう作り方をする必要がある大きさでそれをしますか...
よく動いてるなぁ...なんか無駄な屍々累々の上に立ってるような気がするぞ。それ。
>900 開発陣は死屍累々でしたけど?(爆) よくよく見ると同じ動作する関数があったりとか、どう考えてもまとめられそうなのに 別々になっている関数があったりとか、もおチーム間の連絡が取れてないとどういう目に あうかの、生きた実例満載でしたとも。 このシステムがどこで動いているか、とても言えない……ヒントすら出せないほど有名 なとこだけに……
み○ほ?
金融系ではないです。金融系でこんなのあったら今ごろ首括ってますがな。 #といいたいところだが、金融系でも似たような話はちらほらと…… さすがにこれ以上は守秘義務あるんで勘弁してくだせえ(^_^;)
>>894 ご安心下さい。Makefileに依存関係は全く記述されておりませぬ。
俺「あのう、コンパイルかけるときは…」
客「ああ、必ず "clean" → "make"の順にね。
"clean"で全オブジェクトを消すから。これは徹底する様に」
俺「(-_-)ウツダ」
ちなみに、"clean"なるシェルスクリプトには
cd xxxx_obj
rm -f *
の行、行、行…
>>896 ご賢察。当然のことながら、グローバルでございます。
(調べてないが、このシステムに "static" という予約語は無い様な気が)
さらに、関数の引数にすりゃあいいものもグローバル変数だったりするので
情報のスコープを掴もうとすると、1,2ヶ月集中して解析しないと…
> よくよく見ると同じ動作する関数があったり もっとよくよく見ると微妙に動作が違っている罠
ちなみにこのシステムの規模がどのくらいかというと…… 顧客に納入したドキュメント(ソースファイル印刷は含まず)を持っていくのに、 「タクシーのトランクに積み切れない」 ほどのファイルの山。巨大なファイルキャビネットが丸々埋まるわ、CD-R に入る かどうか怪しいわで…… まあ、共通のファイルをサブシステムごとに別々に出せ(表紙だけ違って中身が同 じ……)、なんて要求で脹れ上がったものもあったんですが、それにしてもあのボ リュームは萎えました。
そんな大量ドキュンメントを紙で納品でつか・・・(;´Д`)
ドキュンメントと呼ぶにふさわしい
1関数が6kステップてのは普通? うちの会社のベテランにいるんだけど。 元コボラーだから?
>>907 ドキュメントなんてものは、中身スカスカでも
量さえあればいいのよ。どーせ客先の奴は
誰も読まないんだし。
>>909 とりあえず、行で数えろ。
ステップというのはどうも DQN くさい。
912 :
仕様書無しさん :02/12/13 14:55
>>909 見てみないと何とも言えないが、
少なくとも読む気はしない。
元コボラーだからなのか、
前の担当者がコボラーだったからなのか、
あるいはあなた以外のあなたの会社の人間が全てコボラーだからなのか、
それとも世の中がコボラーでできているせいなのか、
それは誰にもわからない。
> それとも世の中がコボラーでできている 違うと信じたい。
>909 絶対、普通じゃない。
>>904 makedependしる!とか言いたくなりますなぁ...
# 名前欄に865とか書いてたような気がする。すまぬ > 865
>>913 残念ながら世の中ほとんどコボラーなのだよ。
全部ではないけどね。
>>915 > 世の中ほとんどコボラー
頼む、夢を見させてくれ。
コボラーを見たことが無い僕は幸せ者です。
ちゃんとCに適応してないコボラーはもう逝っていいね・・
ちゃんとCOBOLに適応してないC爺はもう逝っていいね・・
ちゃんとぬるぽに適応してない香具師はもう逝っていいね・・
921 :
仕様書無しさん :02/12/13 18:52
ハイハイ! 逝っていいYO!!
∧_∧
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >_∧∩
_/し' //. V`Д´)/ ←
>>920 (_フ彡 /
>>921 うるせーばか!!
氏ね!
それはもう流行ってないんだよばか!!
>919 オブジェクト指向ってんならワカるんだが・・w COBOLなんて前世紀の遺産もういらないし
>923 じゃあオブジェクトCOBOLならいいのかと小一時間(略
>924 害意外の何物でもない
926 :
仕様書無しさん :02/12/13 23:28
/* なぜ動いているのかわかりません。 変更しないでください。 1998.5.7 Hagiwara */
927 :
仕様書無しさん :02/12/13 23:34
928 :
仕様書無しさん :02/12/13 23:39
public static String SQ = "\'"; public static String LTAG = "("; public static String SELECT = "SELECT"; こんなのがずーっと・・・ そして StringBuffer SQL = new StringBuffer(); SQL.append(SELECT); SQL.append(LTAG + SELECT + ・・・・ HTMLやSQLをこんな感じでつくっていた・・・ JSP知らないのだろうか。
たまたまCORBAの某フレームワークを使う必要性上、 C++(フレームワーク)→COBOL(ビジネスロジック……?)→C++(ミドル) とかゆー奴の末端ミドルを作ってますが何か。 ついでにその上をちょこっといじっただけだがCOBOL初体験までやっちまいましたが何か。 COBOL側からはヌル文字終端なんて有るわけもない文字の洪水が だらーっと流れ込んできて、それをmemcpyしちゃヌル文字くっつけて…… C++側から書き込むときにはうっかりヌル文字入れないよう気を付けて……(つ´д`;)
>>928 ひょっとして
#!/bin/sh
java hoge "$@"
とかしてCGIとして使うんじゃないのか(w
932 :
仕様書無しさん :02/12/13 23:53
>>928 おもいっきりサーブレット。
しかも初期のサーブレットの技法。
フレームワークとかMVCかけ離れているよ。
そのわりには、リーダーとかは
「これからはMVCだ」とかいってるし(w
定数を宣言しているのがインターフェイスになっていて、
色んなクラスで実装されている・・・
C言語のヘッダと勘違いしているのだろうか。
「インターフェイスにすると定数宣言しなくてもいいから便利」とか
いっちゃってるし、その謎のライブラリを「フレームワーク」といってるし。
自分にレスしちゃった(w SQLはPreparedStatement使えばいいし、 htmlは最低限JSPにしてくれって感じだよ。 ついでにLogもマルチスレッド化してないので激遅。 javaを知らないのにjavaの案件受けていいのだろうか。
934 :
仕様書無しさん :02/12/14 02:19
>933 更に、そのプリペア用のSQL文を「ぷろぱちーりーそすばんどる」 にした案件があったよ。あんまり意味なかったけどね。
935 :
仕様書無しさん :02/12/14 13:25
末尾展開してかろうじてスタックオーバーフローはふせげたが、しかし……
携帯がバグっても死人が出ないのが唯一の救いだね。 中身は凄いことになってるらしいね。
939 :
仕様書無しさん :02/12/14 14:33
結構凄いことになっているのが事実。 例えば、WindowsXP対応ソフトという名前だが、中身はMS-DOS時代(Windows3.1でもいいや)の ロジックとビットの扱いまで同じで、途中に変換関数かませてAPIをWindowsXPに対応したもんを呼んでいるだけとか いうようなものが多い 昔のソースを毎回違うメンバーが仕様書もなしに、前のメンバーの改造内容を解析しては 新しい仕様に対応・・・の繰り返しがほとんど 産酔なんて、その最たるヤバメーカー。毎回開発メンバーがハードもソフトも3/4は入れ替わってまつ
どこも一緒だ。 工賃ばかり考えて育てるということをしない。 何年も前のどこの誰ともわからんやつのコードのデバッグばかりしてると いい加減うんざり。
コボラーって新しい歌手のオタクでつか?
>935 残念、携帯ではないです。 ただし通信関連であることは正解…… 一応、官公庁でもありません(w
>939 >例えば、WindowsXP対応ソフトという名前だが、中身はMS-DOS時代(Windows3.1でもいいや)の >ロジックとビットの扱いまで同じで、途中に変換関数かませてAPIをWindowsXPに対応したも>んを呼んでいるだけとか >いうようなものが多い いいじゃん。Adaptorパターン使いまくりで(w
>>943 あくまで雰囲気としてそんな感じ、ということで。
現実はどこかの会社の専用OSで動くどこかのメーカーの専用コンパイラ用に
カスタマイズされたC言語(何故かmemmoveが標準関数として存在してなかったりする)で
5〜6年ぐらい前に組まれた初版のソースを、引継ぎ仕様ももらえない派遣社員が
自力で解析してゴリゴリ力押しで新機能やバグを加えていっているってところだ
945 :
仕様書無しさん :02/12/16 16:04
Set cnn1 = CurrentProject.Connection
>945 それは動きまつか?
RTOS-C? まぁ閉鎖的で誰の目にも触れないソースだから 結構すさまじいことになってる部分も多い
char buffer[40960000]; こんなん。
VBで、「hhmmss」で時刻が格納されている6桁のString変数timeAとtimeB、 その2つの時刻の差を求めたいらしいのだが、 Integer h, m, s String diff h = val(mid(timeA, 1,2)) - val(mid(timeB, 1,2)) m = val(mid(timeA, 3,2)) - val(mid(timeB, 3,2)) s = val(mid(timeA, 5,2)) - val(mid(timeB, 5,2)) diff = format(h, "00") & format(m, "00") & format(s, "00") もーどうツッコめばいいのやら。
char a[255]; char *b; int c; strcpy( a, "DATA" ); c = strlen( a ); b = malloc( c ); memcpy( b, a, sizeof(a) ); 「せんぱい、訳わかんないエラーがでます」
>>950 「訳わかんないのはオマエだ」と言ってやれ。
関係ないけど sizeof a が好みです。
すいません sizeof(a) で、なおかつ return(a) な奴です。すいません。
折れも sizeof a が好きです。
漏れは sizeof(char) と釣り合いが取れなくなるのがイヤだから sizeof(a) です。 でも return a; です。
sizeof (a)で、return a;です。
つかおまいら括弧がどーとか言う前にmemcpyでb+c以降の領域ブチ壊すだろ。 memcpy(b, a, c);ぢゃねーのかと小一時間(略 さらにstrcpy(a, "DATA");はstrncpy(a, "DATA", 254);かと小一時間(略 ついでに255は256って言いたいんじゃないかと小一時間(略 おまけに255みたいに直値入れてねーでマクロにしろと小一時間(略 おまけついでにc程度のもんに変数作るなと小一時間(略 さらにおまけついでに変数名は内容がわかる物にしろと小一時間(略 ハァハァ(違
Dim MangeDate As Date
マ、マン・・・ フランス語かしら?
960 :
仕様書無しさん :02/12/19 21:42
>さらにstrcpy(a, "DATA");はstrncpy(a, "DATA", 254);かと小一時間(略 "DATA"はヌルストップ含めて5バイトしかないので、それは不自然と思う。 それ以外はみんな承知の上。あえて言及するまでないよ。 MangeはMargeかなんかの打ちミスか?
strdup()
ManageDateのtypoです。ちなみに自分自身。
何に使われてるかは知らないけど、ManageDate そのものは別に痛くないと思うぞ。
964 :
仕様書無しさん :02/12/19 23:09
いまコラルのプログラムを直してるんだが、勘弁してくれ。
>962-963 >958をよくみれ
(゚Д゚)ハァ? 脳内補完? 何が?
質問。 何でコボラーは何でもかんでも文字列で処理したがるんですか? そんなならJavaなんて使わず大人しくCOBOL使ってろよ。
sizeof( c )ぐらいがいいな。
>>968 「小一時間」って言ってみたかったんだよぉ
# "DATA"が元のソースでも"DATA"なのかどうか怪しいからね。
# それに変更が入ったけど修正忘れて...というのもあるし。
# 元の文字列がネット経由で送られて来たものならバッファオーバーフロー攻撃が...
>967 COBOLの仕事は年々減りつづけてるの。食ってかなくちゃならないの。 だからそんなこと言っちゃダメ。
>>957 言い訳せんでもみんなわかっとる。
覚えたてのキーワード、連発したくなる厨房なんだなあ、とみんな無視してたんだよ
>970 Cの御作法ワカってないこぼらーが 食っていくために書いたソースで 一体何人泣いてんだろうね
COBOLは全然知らんのだが、 モジュール分割とか構造化とかそーいう概念はCOBOLにはないの? なんかコボラーの先輩が書いたソース見たら 1関数内に20個くらいSQL文が書いてあったりして 気絶しそうになったんだが。
974 :
仕様書無しさん :02/12/20 18:05
>972 俺は平気。もう慣れたもん。全部俺が作りなおせば済む事だから平気。 >973 オブジェクトCOBOLはオブケクト指向らしいよ。どんなんか知らんけど。
975 :
仕様書無しさん :02/12/20 18:59
>>974 OBJECT DIVISION
DATA SECTION
FUNC SECTION
みたいな感じなのかなー?
オブジェクトコボル
977 :
仕様書無しさん :02/12/20 21:14
public Vector taisetsunaData = null; …とりあえず、Ctl+Fしてみた。 『pr(ivate|otected)は見つかりません。』 ああああああああああああああああ
オソッ
と、一応突っ込んでおいた.これでよかったか?
誰か次スレ立ててよ・・・
>>974 >全部俺が作りなおせば
そんな作業に会社がお金出してくれるの?いいなぁ。
ウチは出してくれないから、ただ働きになっちゃうヨ。
「それがイヤなら最初からまともなモノ作れ!」って怒鳴られそうだ。
>>973 構造化プログラミングの概念はCOBOL 85から取り入れられたハズ。
ただし、そういう概念が言語に取り入れられても、プログラマーの
頭が対応していないと、そういうプログラムを平気で書き続けるこ
とになっちゃう。
985 :
仕様書無しさん :02/12/21 11:16
先日、最初オイラが開発して若いのに引き継いだ案件で火を噴き始めたので、 引継ぎ後に追加されたコードを見たら、500行の関数がありまつた。
I hope so karma will die.
ややこしい処理をするとこなんかは1000行行ったりするけどな、俺.
書店で NetCOBOL の解説書を見かけたので読んでみた。 あれ joke soft だろ。
たのむから、関数ヘッダを全てコピペですまさんでくれ。 それなら最初から何もするな。
991 :
ではそろそろ… :02/12/21 18:50
まもなくここは 乂1000取り合戦場乂 となります。 \∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,, /三√ ゚Д゚) / \____________ ,,、,、,,, /三/| ゚U゚|\ ,,、,、,,, ,,、,、,,, ,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/ //三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ∪ ∪ ( ) ( ) ( ) ) ,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ,,、,、,,, ( ) ( ) ( ) ( )
( ´,_ゝ`) プ
993 :
仕様書無しさん :02/12/21 18:55
+ + +( ゚Д゚)<1000 + +
994 :
仕様書無しさん :02/12/21 18:57
,-、 ,.-、 ./:::::\ /::::::ヽ /::::::::::::;ゝ--──-- 、._/::::::::::::::| /,.-‐''"´ \:::::::::::| / ヽ、::::| / ヽ| l l .| ● | l , , , ● l ` 、 (_人__丿 、、、 / `ー 、__ / 1000 /`'''ー‐‐──‐‐‐┬'''""´ ./ ___ l __ l ./ / |/ | `ー-< / ./ ./ `ー‐--{___/ゝ、,ノ
>>992 ∧_∧
/⌒ヽ ) <笑われた…鬱だ・・・
i三 ∪
|三 |
(/~∪
三三
996 :
仕様書無しさん :02/12/21 18:59
>>992 茶でも飲んでマターリ汁
____ _______/
V
∧ ∧ シュッ! ガン!!
( ゚Д゚) ミ 从_∧
/ つ ====== 旦 )
〜/ ノ ( )
(/ し'
誰もいない。。。
1000getするならイマノウチ。
999 :
仕様書無しさん :02/12/21 19:00
1000取るなら今のうち・・・
久しぶりに1000げっと。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。