トップページ⇒tech
781コメント248KB

あなたのまわりの糞コード

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
糞すぎて、ある意味美しさすら感じるようなコードを見せてクレー
(身元がばれない程度に)
0002デフォルトの名無しさんNGNG
int a[16];
for( int i=0; i<=16; i++){
 a[i]=.......
}

デバッグさせられる方の身にもなってみろ……
0003デフォルトの名無しさんNGNG
>>2
まぁ、そもそも即値なのがまずいのかもしれないけど、
ローカルだったら許せなくも無いレベルかなぁ。すぐ気づくでしょ。
境界関係はデバッグ時の優先チェック項目だよね。

0004デフォルトの名無しさんNGNG
>>3
#define array_sizeof( array ) ( sizeof( (array) ) / sizeof( (array[0]) ) )
を使うとか。
00053NGNG
>>4
うん、私はそういう感じにしてます。
でも2の場合の直接の問題は < と <= だからねぇ。
0006デフォルトの名無しさんNGNG
境界侵犯関係の調査は、PURIFYとかBoundsChecker使うのが楽。
リークしてないのにリークと報告するような事もあるけど、
メモリアクセス上のバグを沢山自動検出してくれるのはありがた
いっすよ。
0007デフォルトの名無しさんNGNG
>>3
ちなみにJavaなら、実行した瞬間にRuntime例外が飛んでくれて、
スタックのトレースはいてくれるので、楽チン。
0008C#NGNG
ボクもだぞ!
0009PerlNGNG
勝手に配列のサイズが増えちゃいます。テヘ。
0010PascalNGNG
var a: array [0..15] of Integer;
ってやるから、すぐ気づくんだよなぁ。
0011PascalNGNG
つーか、これがあった…
for i := Low(a) to High(a) do begin
 a[i] := ...
end;
0012あはは、NGNG
あなたのまわりの糞こおどぉー♪

歌っちゃったりなんかしてぇ〜・・・
0013デフォルトの名無しさんNGNG
Cはsizeofしかないからなあ・・
マクロ定義じゃウザクなるだけだし・・・
0014デフォルトの名無しさんNGNG
C言語でinlineキーワード使える処理系使えば?>13
32bitではVisualC++やBCC55、GCCとかかな。
16bit処理系で無い?
0015デフォルトの名無しさんNGNG
mallocしてfreeしないコード
0016ボログラマーNGNG
switch( n )
{
case 'A':
case 'B':
case 'C':
case 'D':
 switch( n )
 {
 case 'A':
 case 'B':
 case 'C':
 case 'D':
  ......
  break;
 }
 break;
}
無駄に2重switch。
・・・いや、だから何がしたかったんだ?
0017デフォルトの名無しさんNGNG
>>15
freeしてmallocしないコード
0018デフォルトの名無しさんNGNG
>>17
mallocを知らなくて何でもかんでもstaticに取るコード
0019みんな経験あるでしょNGNG
Cしか知らない奴がはじめて書いたC++/Javaのコード。
0020デフォルトの名無しさんNGNG
>>19
う、耳が痛い。
0021デフォルトの名無しさんNGNG
f(); /* fを呼ぶ */
0022デフォルトの名無しさんNGNG
count--; /* カウントアップ */
0023デフォルトの名無しさんNGNG
配列を知らないのか、n_00〜n_13までの14個の引数を
ずらずら書き連ねた関数の宣言。客先で倒れるかと思った。

作ったのは下請けの新人らしい。
0024デフォルトの名無しさんNGNG
#define _
for (;_;) {
...
0025デフォルトの名無しさんNGNG
「リファクタリング」には糞コードの実例(とその改善方法)が
山のように載ってるな。
0026デフォルトの名無しさんNGNG
お約束サイト: 「いかにしてメンテナンス不能なコードを書くか」 http://mindprod.com/unmain.html
0027デフォルトの名無しさんNGNG
メンテナンス不要じゃないのね・・・・
0028デフォルトの名無しさんNGNG
>>26
面白かった。ありがとう。
LISP is a dream language for the writer of unmaintainable code.
てのがワラタ
0029デフォルトの名無しさんNGNG
p++; // ポインタをインクリメント
0030デフォルトの名無しさんNGNG
for( i = 0; i < 10; i+=1)
0031デフォルトの名無しさんNGNG
>>29
え?だめなの?
int i, val[100], *p;
p = val;
for( i = 0; i < 100; i++, p++)
  *p = 0;
とかやんない?
この場合はインデックス使った方が良いけどさ。
0032デフォルトの名無しさんNGNG
>>31
>>29のは、しょうもない無意味なコメントを書くなってことだろ
0033デフォルトの名無しさんNGNG
>>31
おばか?
あんたもしかしてこんなコードかくでしょ

#include <stdio.h> /* stdio.h を include */

main() /* main関数 */
{
  int i = 0; /* int 型 i を宣言、値を 0 にする */

  for(i = 0; i < 10; i++) /* i を 0 から 9 までインクリメントする for 文 */
    printf("hello, world\n"); /* hello, world を printf する */

}

うざぃ。
0034デフォルトの名無しさんNGNG
uchar i;
for (i = 0; i < 256; i++) ...
0035デフォルトの名無しさんNGNG
>>34
always true な Warning 出ないっけ?
0036名無しさん@1周年NGNG
// 機能: データに値をセットします。
//
extern void PutData(int *data);
0037名無しさん@1周年NGNG
public class HandlerBase implements ...{
...
}

DOM/SAX 系 API は全部苦ソ。
0038デフォルトの名無しさんNGNG
以前、この板で見たコード。

for(i = 0; i < strlen(s); ++i)
...

for の条件判定の中で strlen を使うなよと思った。
0039デフォルトの名無しさんNGNG
マァマァ掲示板のコードはロジックにとどめて最適化は各自がするってことで
0040デフォルトの名無しさんNGNG
>>38
なぜ? 説明してね(はぁと)
0041デフォルトの名無しさんNGNG
strlenが毎回実行されるってこと?
0042デフォルトの名無しさんNGNG
38>>41
そうだよ。
0043マジデNGNG
>>37
DAMN/SUCKS 系 APE とは何でござるか?
0044デフォルトの名無しさんNGNG
>for の条件判定の中で strlen を使うなよと思った。

vector<むにゃむにゃ> vec;
vector<むにゃむにゃ>::iterator iter;

for (iter = vec.begin(); iter != vec.end(); iter++) {
 :
}

どう思う?
0045デフォルトの名無しさんNGNG
vec.end()は明らかに軽いので問題なし。
strlen()は明らかに重いので問題あり。
0046デフォルトの名無しさんNGNG
>>44
それはふつうの書き方だと思う。

forの中の strlen()は、そもそもforループ自身が文字列を頭から
順番になめる処理なのに、同じような処理を行うstrlenをループごと
に毎回実行していて、気持ち悪すぎ。
0047デフォルトの名無しさんNGNG
こういう玄人のグチを聞いて、素人はレベルアップしていくわけです。
0048デフォルトの名無しさんNGNG
>>47
この程度の事でいちいち玄人扱いしちゃいかんとおもう。
0049デフォルトの名無しさんNGNG
while(1){
 ..
 if ((err = func()) != NOERROR)
  break;
 ..
 if ((err = func2()) != NOERROR)
  break;
 ..
 break;
}
 if (err){
 ..
 }
 ループではないのです。
 関数分ければいいのに...

0050デフォルトの名無しさんNGNG
returnは関数内で一個だけ!とかいう、
脳梗塞糞馬鹿SEの氏んで欲しい仕様の犠牲者ですね、その関数。
大手いくとたまにそんなあほな仕様が標準化されてるんだよね。
0051デフォルトの名無しさんNGNG
あと、なにが何でもGOTO禁止!とかもルールにあるみたいだね。
アホか!と思うが。おいらならせめてこう書く。goto使っても
分かりやすくてよみやすい方がいいと思う。

if(func()) goto err;
if(func2()) goto err;

return;

err:
//ERROR処理
return;
0052真のプログラマは PASCAL を使わないNGNG
真のプログラマは、GOTOの使用を恐れない。 ??
0053デフォルトの名無しさんNGNG
>>49
その書き方はCマガのあっぱれご意見番(だったかな?)で紹介されてたな。
51のような、エラー処理をgotoで飛ばす書き方の代用だそうだ。
(その後、読者からdo{}while(0)を使ったほうが良いとか指摘されてたな。たしか)
0054デフォルトの名無しさんNGNG
エラー(例外)処理へのgotoなら許す!
0055デフォルトの名無しさんNGNG
>>51 プログラマと呼ばれている人たち全てが君のレベルまで達していれば
それでもいいんだけどね。
0056デフォルトの名無しさんNGNG
try{
 func();
 func2();
}
catch(Error e){
 //error processing
}

C++風に書こうよ。
005751NGNG
>56
そりはC++かJavaの時でないと…
Cの最近の言語仕様にはtry、catchあるのかな?
知らんかった。ちょっとうれしい。
0058デフォルトの名無しさんNGNG
Cでは無理です。>57
0059デフォルトの名無しさんNGNG
ねえよ>57
0060デフォルトの名無しさんNGNG
Javaなら、こういう話の流れではやはりラベル付きbreakを…
0061>NGNG

こんなの
if (!func1() || !func2() || ....) {
しっぱいしちゃった...
}
でいいじゃん。

gotoを使うことは恐れないが、最初っからgotoを使いたくなるような
状況に陥らないのが達人。間抜けに「gotoを恐れるな」とか教えると
エラー処理ごときでも乱用するからたまらん。
006251NGNG
>61
異常処理が全部共通ならそれで十分だね。スマソ。
でも関数を10個20個コールしていて、異常処理が3、4パターンくらい
とかいう時には、gotoつかうのが一番すっきりしそうだと思うんだけど。
0063デフォルトの名無しさんNGNG
あるいはエラー発生位置を知る必要があって、なおかつエラー発生位置用の
グローバル変数など使いたく無い場合とか
0064デフォルトの名無しさんNGNG
そういえば真紀大先生が昔Cマガでthrow, catch風の
Cのマクロの実装を大威張りで解説してたな。

もっと昔にha例外処理なんてよっぽど
大規模なアプリ以外いらん。とも言ってたな。
0065デフォルトの名無しさんNGNG
あの人痛いよね。>64
あんなんで原稿料貰ってると思うと腹が立つのでこの話題はもうおしまい。
006661NGNG
>>62
そうなるとケースバイケースだね。大抵の場合はうまくサブルーチン
分割できると思うけど、状態機械みたいなのを書いてるときはgotoの
ほうがすっきりすることも多い。

0067名無しさん@1周年NGNG
>>43
X-ML のスレッドを解析&構築するための API。
0068デフォルトの名無しさんNGNG
>>66
状態機械の場合は、状態遷移表を書いて
その表の通りに処理するようにかけば
gotoはいりませんよ
0069一生懸命探す奴NGNG
extern unsigned short table[];
// table[0x2121] = 0x8140; のような、128KBの変換テーブルが作ってあると思ってくれ。

unsigned short JIStoSJIS(unsigned short jis)
{
  return table[jis];
}

unsigned short SJIStoJIS(unsigned short sjis)
{
  unsigned short jis;
  for (jis = 0x2121; jis < JIS_MAX_CODE; jis++) {
    if (table[jis] == sjis)
      return jis;
  }
}
0070デフォルトの名無しさんNGNG
>>36
関数の宣言に extern を付けるのがダメってことだよね。
0071デフォルトの名無しさんNGNG
>>70
いやメソッドの先頭が大文字だからだ
Javaみたく「putData」にすべきだ
0072デフォルトの名無しさんNGNG
あまり大した事は無いが、
unsigned int Hogehoge() {
0073デフォルトの名無しさんNGNG
あまり大した事は無いが、
unsigned int Hogehoge() {
・・・
return -1;
}
と言うなら見たことがある。
0074デフォルトの名無しさんNGNG
つーか、WinAPIのヘルプに
BOOL InitApplication(HINSTANCE hinstance)
{
  …
  return RegisterClassEx(&wcx);
}
というコードがあるのだが。
確かにBOOLはintのtypedefだけど・・・
0075デフォルトの名無しさんNGNG
ちょっと話がずれるが
コピペを大量に使うことは駄目なのか??
コードを再利用してるんだから
いいと思うんだけど
なんか駄目みたいに言う奴がいるんだけど・・。
0076デフォルトの名無しさんNGNG
ソースレベルの切り貼りを「再利用」などと言わねぇって。
0077デフォルトの名無しさんNGNG
そのコピペしたコードが間違えてたら全部直すのか?
漏れがあったらどうする?人海戦術か?
0078デフォルトの名無しさんNGNG
コピペするくらいなら関数にして呼び出せば? ってことでしょ。
俺はあんまし守ってないけど。
0079デフォルトの名無しさんNGNG
あんま共通化すんのもなぁ・・
例えばAって関数をBとCから呼び出してるとして、
Bの仕様がちょっと変わってAを修正したとするじゃない。
そんときCもテストし直さなきゃなんないのが面倒くせぇの。
0080デフォルトの名無しさんNGNG
リファクタリング読
0081デフォルトの名無しさんNGNG
Bの仕様がちょっと変わったら、Bをちょっと修正すりゃーいいんじゃないのか?
たとえがよくわからん。
0082デフォルトの名無しさんNGNG
意味もなく class を使っている C++コード。
オブジェクト指向 じゃないのに、class を使っている。
C言語ユーザーが、オブジェクト指向という概念を勉強せずに、
言語の機能を使うとこういうことになる。
 むかしの私。
0083デフォルトの名無しさんNGNG
>>79
機能の切り分けとがまずいとか、そもそも設計で間違ってるとか、
そんなんじゃないのか?
008479NGNG
最初はBとCでおんなじ項目出力してたから出力部分を共通化してAにしてたけど
Bだけに出力項目が追加になったとか、そんな感じ。

あんま詳しく言えんけどなんか今やってんのそんなんばっか。
最初は同じような処理が多いんだけど、時間が経つとビミョーに
変わってくんの。
0085デフォルトの名無しさんNGNG
そんなん変更があった時点で、
Bから出力処理を呼び出すところを変えればいいじゃん。
始めは共通化しとくべきた。デバッグ面倒だろ?
0086デフォルトの名無しさんNGNG
#define THE_CARDINAL_OF_EMPTY_SETS 0
#define THE_FIRST_ENTITY_IN_THE_NATURAL_NUMBER THE_CARDINAL_OF_EMPTY_SETS
#define THE_ONLY_ONE_NUMBER_WHICH_CAN_BE_USED_TO_COMPUTE_SUCCESSIONS 1
#define succession(x) ((x) + THE_ONLY_ONE_NUMBER_WHICH_CAN_BE_USED_TO_COMPUTE_SUCCESSIONS)
int i;
for(i = THE_FIRST_ENTITY_IN_THE_NATURAL_NUMBER; i < 10; i = succession(i)) { ... }
0087デフォルトの名無しさんNGNG
あっ、CARDINAL じゃなくて CARDINALITY だったっけ…?
鬱だ氏のう
0088デフォルトの名無しさんNGNG
俺もこれくらいのコードは書きたい
http://www.ioccc.org/years.html
0089>88NGNG
素でそんなん書きたくない(;;
009079NGNG
>>85
そう。それで今までAを呼び出してた部分をやめて
AからコピペしたものをBに内包する。ほんでそこを直す。
Aを直すとCもテストし直さないとなんないから。
なんであんまり共通化されてない。ってこと。
0091デフォルトの名無しさんNGNG
float Aa, Ah, Av, Ac, Ax, Ay; /* constant of shikisa */
0092デフォルトの名無しさんNGNG
p>例えばAって関数をBとCから呼び出してるとして、
>Bの仕様がちょっと変わってAを修正したとするじゃない。
>そんときCもテストし直さなきゃなんないのが面倒くせぇの。

A自体の関数単体テストの結果が、両方の場合で同じなら
Cの再テストは必要無かろう。
分けるとはそういうこと。

ついでに、そういう場合は、
Bの変化に合わせてあげるのをA'とするなら、
Aはそのままで、Aを利用するA'を作るだろう。
または、被せる形でのA'が無理なら、
AとA'に共通した部分を抽出した(新たな)関数に
Aの役目をする(新たな)被せ関数と、
A'の役目をbする(新たな)被せ関数を作るもんじゃない?
どっちにしろAとしての振舞いに関しては、最初の段落の通り。
0093デフォルトの名無しさんNGNG
俺のPCの中に死ぬほどあるぞ。
0094デフォルトの名無しさんNGNG
でも、動けばいいやって思っちゃうときはあると思う
0095アマNGNG
他人の書いたコードなんてどうでもいいな。
009679NGNG
>>92
修正のたんびにそんなことしてたら関数いくつあっても
足りんよ(´Д`)
0097デフォルトの名無しさんNGNG
いまだに
1.変数名がVAR1000,VAR1010...
2.サブルーチン名がSUB1000,SUB1010...
3.ファイル名がPROG1000,PROG1010...
.
.
.
(泣)
0098デフォルトの名無しさんNGNG
表定義が
ABSASA
ABSBSA
ABSASB

更にその中の項目が
DATA001
DATA002
DATA003


しかも標準で決められる・・・
0099デフォルトの名無しさんNGNG
なんだその糞会社!糞標準!人間は機械じゃねえ!!
0100デフォルトの名無しさんNGNG
>>97-98
これなら変数名つけるのが楽だね。
見習おう。
0101デフォルトの名無しさんNGNG
大昔のメモリ不足時代の識別子文字数制限の遺物だね。
20年前なら標準でも仕方ないけど、今そんな
ケチなシステムってあんまりないはずだが…
0102デフォルトの名無しさんNGNG
変数名も関数名も7文字「も」あるじゃん...
というのはともかく
画面名が番号で振ってあるってのはワリとあるのでは。
で、仕様の画面名に合わせてコーディングするとソースもそうなるのな。
010398NGNG
>>101
その20年前の仕様を未だに引きずってる。
しかもWindowsやUNIXを使ってるのに。
0104デフォルトの名無しさんNGNG
>>103
お気の毒に...
給料までも20年前の額を未だに引きずっていないことをお祈りいたします。
0105デフォルトの名無しさんNGNG
>>70-71
コメントが無意味ってことじゃない?
0106>105NGNG
2ちゃんねるネタ心者の方は、メール欄を読むことも覚えましょう。
0107デフォルトの名無しさんNGNG
こんなの
if (!func1() || !func2() || ....) {
しっぱいしちゃった...
}

はまずいでないの
func1()・func2()・・・・
の実行順番は保証されてないのではなかったかな
0108デフォルトの名無しさんNGNG
while(1){
 ..
 if ((err = func()) != NOERROR)
  break;
 ..
 if ((err = func2()) != NOERROR)
  break;
 ..
 break;
}
 if (err){
 ..
 }
私は、こういう書き方すきなんですが
コーディング規則に無限ループの禁止
というのがあってチェックにひっかかりました
そこで
do{
・・・
}while(0==1);
にして逃げたのですが
分岐ごとにトレースを入れろというコーディング規則があって
if( .. ){
TRACE(.....);
break;
}
になりまして
さらにif()の中に関数を書いてはだめというコーディング規則がありまして
err = func();
if (err != NOERROR){
TRACE(.....);
break;
}
さらにコメントに関するコーディング規則もあって
結局もともと5・6行のものが
do{
...約60行
}while(0==1);
になってしまいました
doでもwhileでもif for switchでも
中身が長いと読みにくくなりますね。
0109デフォルトの名無しさんNGNG
>>107
まずくないよ。
左から評価されることも真偽が確定された時点で評価が打ち切られるこ
とも保証されてる。
0110デフォルトの名無しさんNGNG
>>109
&&と||と,演算子は評価順番が決まってるのね
あと?:もそうか
+ や - や |なんかとは違うわけね
納得
0111デフォルトの名無しさんNGNG
今日発見 だいたいこんな風
for(i=1;i<20;i++){
switch(b[i]){
case 1:
・・・・
break;
case 2:
・・・・
continue;
case 3:
・・・・
goto end_for;
case ・・・・

case 20:
break;
default:
continue;
}
・・・・
}
end_for:

ちょっと工夫すれば、gotoはいらないし
よくしってれば、switch文もいらない
ただ switchがいいかジャンプテーブルがいいかは
意見が分かれるとこだけど

0112デフォルトの名無しさんNGNG
if( val % 1 == 0) func() ;

馬鹿だとおもつた
0113デフォルトの名無しさんNGNG
デバッグ時に
 if( val % 2 == 0) func() ;
とか
 if( val % 3 == 0) func() ;
とか、試行錯誤してそうなコードだな…。
微妙。
0114デフォルトの名無しさんNGNG
>111
最近のコンパイラはswich文をジャンプテーブルに変換してくれるyo。
(gcc2952やVisualC++6で確認した)
アセンブラ出力見てみ
0115デフォルトの名無しさんNGNG
>>114
default: ついててもか?
0116114NGNG
>>115
ジャンプテーブルが有効になる条件について詳しくは知らん。
自分で確認しろyo
0117名無しさんi486NGNG
107に関連して・・・
if( !(aho() && kuso()) ){
  ...
}
ド・モルガンくらいは知ってけよ。
0118名無しさんi486NGNG
↑あ、ahoとkusoは変数ね。
0119デフォルトの名無しさんNGNG
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
SUCCEEDED(pD3D->SetRenderState(〜〜)) &&
・
・
・
SUCCEEDED(pD3D->SetRenderState(〜〜));
0120117NGNG
あれ・・・鬱だ寝よう。
0121名無しさん@お腹いっぱい。NGNG
3000千ステップのメソッドが有った。
0122デフォルトの名無しさんNGNG
int data[10];
for(i=0;i<10;i++);
{
InitData(data(i));
ListAdd(data(i));
}

みたいの書いて当たり前だがまともに動かず、一日悩んだ事があります。
自分ではもっとも情けない失敗だったな。
0123122NGNG
しまったタブ失敗した。
0124デフォルトの名無しさんNGNG
*p/*q;
0125デフォルトの名無しさんNGNG
げ、クソコード発表なんて言われたら、いま移植作業担当
してるプロダクトの全ソース公開したくなるな。

覚えてるヤツ書くか。

---
char tag[4];
char a1[10];
char a2[10];
int i, j, l;

tag[0] = 'A';
tag[1] = 'A';
tag[2] = ';';
tag[3] = NULL;

sprintf( a1, "%d", hoge );
sprintf( a2, "%d", fuga );
for ( i = 0; i < 3; i++ ) {
 if ( i == 2 ) {
  l = strlen( a1 );
  for ( j = 0; j < l; j++ ) {
   fputc( a1[j], outfp );
  }
  fputs( ",", outfp );
  l = strlen( a2 );
  for ( j = 0; j < l; j++ ) {
   fputc( a2[j], outfp );
  }
 }
 fputc( tag[i], outfp );
}
---
これ書いたヤツはfprintf()を知らんのか?いや、その
前にsprintf()とfputs()知っていながら何故こんな
書き方するんだ?
あと'\0'とNULLは違うだろ。整数型変数の初期化でNULL
代入しているのは許すが、浮動小数点型もNULLで初期化
すんのヤメレ。コンパイルエラーになる。
0126125NGNG
あと、こんなの。

---
char *p;

p = (char *)malloc( size );

・・・・・どっかのループの中

p = p + 1;

・・・・・どっかのループの中終わり

free( p );
---
これで落ちてない移植元ってステキ。
0127125NGNG
他にはグローバル変数が、ソース中で使用されている
範囲が10行ほどの間だけとかにちじょうちゃめしごと
(日常茶飯事)。

0128デフォルトの名無しさんNGNG
ちょっとヨロシク
0129デフォルトの名無しさんNGNG
>>127
よくあるよくある。
0130デフォルトの名無しさんNGNG
ソースを変更する場合、関数に引数を追加すると、
ドキュメントを書き直したりレビューを開催したりで面倒なので、
なるべくグローバルにすること。

…という会話が、隣の島から聞こえてきたことがある。
0131学生DNGNG
>>130
それ逆の方が良いと思うんですが、、、
「グローバル変数を追加する時は会議を開くべし」
とか………
0132デフォルトの名無しさんNGNG
グローバル変数を新たに追加する場合は認可手続が必要になるので
まえもって大目に申請しておくこと。
0133デフォルトの名無しさんNGNG
それでも足りなくなったら、共有メモリを使用。
0134デフォルトの名無しさんNGNG
グローバル配列変数を型ごとに1000個くらい確保しておいて、
各自勝手に使うというのはどうだろうか?
0135デフォルトの名無しさんNGNG
で、誰がどれを使うか&使っているかをグローバル変数で・・・
0136デフォルトの名無しさんNGNG
>>134
>>135
じゃあ、誰がどれを使っているかを管理する関数を書こう。
名前はそうだな...malloc()だ。
0137デフォルトの名無しさんNGNG
偉大な歴史の1ページをかいま見た気がするよ
0138デフォルトの名無しさんNGNG
Cのコメントにギコ猫を書いている奴がいた。
それをそのまま出荷した。
0139デフォルトの名無しさんNGNG
ゲーム機のプログラムではmalloc使うと怒られます。
0140デフォルトの名無しさんNGNG
VBのコードだけど…

Dim i as Integer

for i=0 to 99999999
if 終了条件 then
exit for
end if
何らかの処理…
next

0141駄洒落魔神NGNG
ミスターmalloc
0142デフォルトの名無しさんNGNG
>>141
war
0143デフォルトの名無しさんNGNG
>>139
うっそーん!?
つうかないならないで、メモリマネージャは自力実装だわな、普通。
0144デフォルトの名無しさんNGNG
PS2ではバリバリ使ってるよ。STLもな >>139
0145デフォルトの名無しさんNGNG
PS2のライブラリは糞ってホント?
0146デフォルトの名無しさん NGNG
>144
ゲームでSTLって何に使うの?
0147144じゃないがNGNG
楽だからだろ
アルゴリズム考えなくていいから
0148デフォルトの名無しさんNGNG
>>144
普通使うか?
メモリ確保できなかったときどんな処理するんだよ。
ゲームはエラー出して止まる訳には行かないんだぜ。
0149デフォルトの名無しさんNGNG
>>148
仕様によっては、必要なメモリ量がわからないときがあります。
仕様が悪いんだけど、ものわかりの悪いSEに説明するとコンピュータの
基礎から教えなくちゃいけないのでほっときます。
どっちにしろメモリが足りなくなったら止まってしまいます。
0150144NGNG
>>148
>メモリ確保できなかったときどんな処理するんだよ。
ふむ。ヒープを使わなくても、あらかじめ用意しておいたバッファ量
以上のデータは扱えないでしょ? 同じことだよ。

質問に対する答えは「メモリ確保できないようなデータは使わない」
だね。
0151デフォルトの名無しさんNGNG
PSで組めって言われたら俺も使わないと思うけど、
PS2くらいあれば使ったってかまわないだろ。
もちろんそれ相応の注意はいると思うけど。
0152144NGNG
>>151
先輩はPSでも使ってたなぁ。
ま、ゲームの種類などにもよるから一概にはいえんよ。
0153虹NGNG
ヒープ(malloc)でのメモリ確保だと、malloc/freeする順番により
隙間ができたりするのでデバッグが大変だと思うのですが。
ゲーム開発で使うなんて信じられん。
0154デフォルトの名無しさんNGNG
mallocというか、ヒープはつかうでしょ、普通。
虫食いは確かに困るけど、そのへんは気をつけて組むし。
ヒープ禁止して異様なプログラムスタイルになるほうが
よっぽど害になると思うのだが。
0155デフォルトの名無しさんNGNG
ヒープは使うが、malloc相当のものは自分で用意するし、
コーディング自体も、不確定な領域を適当にmalloc相当関数で
取得する、なんて事は絶対しないな。
0156144NGNG
>>153
メモリ上に常駐する領域と、一時領域の確保戦略を違うものにすれば、
隙間ができる問題はほとんど無視できるでしょ。

>>155
malloc相当のものを自分で用意するかはいつも悩むんですが、
システム側の関数(特にprintf系)がmallocを使っていることが
多くて、なかなか悩ましいですね。
mallocのインターポジショニングで確実にシステムライブラリ内の
メモリ確保系を乗っ取れているのか確認が難しいしなぁ...
0157デフォルトの名無しさんNGNG
古い話題で悪いけど、
for(i=0;i<strlen(s);i++)
...
って、最適化の対照にならないんですかね?

わざわざint l=strlen(s);とかやるのって美しくないし。
ループの内容によっては、
for(i=strlen(s);i>=0;i--)
...
って書くのが美しいけど
0158デフォルトの名無しさんNGNG
>>157
ループの中でsのサイズが変わっていない事を、
コンパイルの時に確認するのは面倒そうだしね。
なかなか最適化の対象にはならないんじゃないかな。
0159デフォルトの名無しさんNGNG
printf系がmalloc使っているのは、常々止めて欲しいと思う。
といっても仕方がないのかな。
0160デフォルトの名無しさんNGNG
157>>158
まぁそうかもしれない。
これくらいのことは人間が最適化をするのが一番かな
今思いついたけど、一番エレガントな方法は
for(i=0;s[i]!='\0';i++)
...
かな
ちなみに>>157の下のコードはバグがあるな。情けなや
0161デフォルトの名無しさんNGNG
>>157
C文字列ならばfor(p=s;*p!='\0';p++)
またはfor(i=0;s[i];i++)
などなど
意味は、for(i=0;i<strlen(s);i++) が一番わかり易いと思う。
0162>>161NGNG
s[i]は良くない。
意味的に「これはゼロ文字で終了するcharの配列」って事を
以後読む人に一瞬で伝えるためにも、
ここは157さんのように「s[i]!='\0'」とすべき。

逆に、pがchar*ならば、大抵文字列へのポインタだから、
for(p=s;*p;p++)で良いかと。
ただこの場合、forが0からまわってないから、
157さんの意図とは違うと思われる。
0163デフォルトの名無しさんNGNG
c=c++;
0164デフォルトの名無しさんNGNG
>>155
言ってる事が良くわかんないのですが。。。
malloc相当のものは自前で用意するのに、
その用意した関数でメモリ確保したりしないの??

malloc相当のものを自作して使用するのなら、
素直にmalloc使っておけ、と思うのは間違ってますかね?
その自作したmalloc相当のほうが、
はるかにメモリ割り当て戦略が優れている、とか、
ぜったい隙間ができない、というのなら自作も良いかも知れないけど。
というか、そういうヒープ管理の方法あったら教えて欲しい。
0165デフォルトの名無しさんNGNG
隙間ができたらつめるってのはどうですか?
アドレスが変わるじゃねーかゴルァというツッコミに対しては、
ポインタはテーブルで引くことにすれば解決。
0166デフォルトの名無しさんNGNG
>>165
それはMS-Windows 3.x以前やSX-Windowで言うところのメモリハンドル
みたいなもんなので、MMUがなかった昔のコンピュータが使ってた常套手段。

コンパクションすると、マーク&スイープ式ガベージコレクタみたいに
処理が止まるとこが、ゲーム屋的に許容できないと思う。
0167デフォルトの名無しさんNGNG
>>164
155ではないが、mallocを自作するのは優れているからというより、
メモリ管理まわりの挙動を自分で管理したいからってのが本音だね。

で、結局不確定なサイズを取得したり開放したりを繰り返すのは、
どうしてもメモリに虫食いが出来るので、あまりやらない。
虫食いが出来ると、メモリに収まるようにデータ・使用メモリサイズ
設計していても、失敗する可能性が出てくるので、限界までメモリを
使うことが出来なくなってしまうし。

だから結局ある程度計画的にメモリ確保や開放を行うので、パソコンで
プログラムする人がやるような、必要なところで確保して、使い終ったら
すぐ開放するみたいな使い方はしないのです。
0168デフォルトの名無しさんNGNG
>>164
家庭用ゲーム機やアーケードのゲームだと
ある1シーン内(タイトル画面とか、戦闘モードとか)で使うメモリを
自作mallocで確保して、シーンが変わったら
ヒープまるごと初期化とかよくやるっす。
これなら少々予期しないリークがあっても大丈夫なので。
0169デフォルトの名無しさんNGNG
ゲーセンだと最低14時間(10:00〜24:00)ピンピン動いてくれなきゃ困るし、
50時間かかるRPGをノンストップでクリアするよーな人もたくさんいますからな。
しかもメモリは2MB〜32MB程度、仮想記憶という保険もなし。

となると、メモリ管理面でPCとは別の戦略が発生するのは必然って感じダスな。
ま、最近だと安易にmalloc使っちゃうけど(ぉ
0170デフォルトの名無しさんNGNG
つーかクソコード話そうよ。
ゲーム専用機ネタは面白いけど、出来れば別スレッド誰か立てて
0171デフォルトの名無しさんNGNG
自作のallocator、4種類ぐらい持ってる・・
C++とか使えば1つに統一できるのだが、ほとんど需要はCベースなので
0172デフォルトの名無しさんNGNG
クソコード話が面白いとはおもいませんが>170
0173164NGNG
いや、私もゲーム屋なんですよ、一応・・・
結局必要なのは計画的なmallocの使用であって、
mallocを全面禁止というわけではないですよね?
その際、自作mallocか出来合いのmallocかは
それほど関係ないと思ったのでした。
(自作のほうが挙動全て把握できるというのは了解です)
いや、なんかみんな「mallocつかうと虫食いになるからダメ」
って感じだったんで、そうじゃないでしょ、計画的に使えば
全然おっけーでしょ、って主張したかったのでした。

>>170
スレちがい失礼しました。
0174170NGNG
>>172

そりゃたぶん、自分がクソコード書いてるからだよ。
クソコードは笑えるって。>>163とか面白い内容含んでるよ。
これ、たぶんコンパイラによって動作は不定なんじゃない?
0175デフォルトの名無しさんNGNG
>>111
ってあれより簡単にわかりやすく書く方法ってあるの?
わからないので、どなたかヒマな方、教えてください。
0176デフォルトの名無しさんNGNG
そりゃ、163のは言語未定義の構文だし。
面白味のかけらもありませんがぁ?>174
0177デフォルトの名無しさんNGNG
>>176
言語未定義の構文って何?
コンパイルできるって事は構文上の定義を通ってるんじゃないの?
それとも163ってコンパイル出来ないの?
マジレスキボンヌ
0178デフォルトの名無しさんNGNG
switchのbreakとforのcontinueをごっちゃにしてるので見にくいね。>111
状態遷移でやった方が保守が楽。
0179デフォルトの名無しさんNGNG
>>176
ありゃ、俺も163は面白いと思ったけど。
名著「プログラミングの心理学」の作者とかが喜びそう。
糞コードって書いた人の気持ちを考えると面白いよ
0180デフォルトの名無しさんNGNG
ああいう構文は、言語側の規約に無いので動作を保障しませんって事。>177
ANSI-Cの仕様書そのものか、P.J.プラウガーとか規格関係者の本に詳しく載ってるよ・・
0181デフォルトの名無しさんNGNG
ぜんぜん面白くない・・
あんたどうかしてるよ。>178
0182181NGNG
x>178
o>179
0183デフォルトの名無しさんNGNG
174>>176

163みたいなコードを普通に書く?
こんな構文、思いつきもしないでしょ、普通は。
ビリヤードでも初心者の方が突飛もない狙い方をするように、
初心者の書くクソコードは理解を超えたことをしてくれて面白いと思うんだが、
まぁ現実主義者や実際に書いてる奴にはその面白さは理解できないよな。
0184デフォルトの名無しさんNGNG
>>183
はあ?何がいいたいのか良く分からんが・・・。
おれはこれ以上関わらないことにするよ。
時間の無駄っぽいからなぁ
0185デフォルトの名無しさんNGNG
c=c++;
これって c=c; と同じ?c++ の評価値が c だから。
そんな気がしたけど。
0186デフォルトの名無しさんNGNG
cは評価された後、インクリメントされる。よって1増える。
0187185NGNG
ども。
うーん。++ の評価ポイントって ; の後、でしたっけ?
= の後じゃなくて。
わかりづらいコードですねー。
0188デフォルトの名無しさんNGNG
= の後→ = の前
0189185NGNG
確認しまちた。int c = 0; c = c++;
gcc で 1, bcc で 1。(-O-,-O,-O2)
0190名前ついてますか?NGNG
いや、だから動作は未定義だって...処理系依存。

すごく面白い糞コードはこの前見たんだけど、
関係者がみててばれるかもしれないのでいえない...
0191デフォルトの名無しさんNGNG
未定義と処理系依存は違うので注意。
0192185NGNG
>190
ういっす。こんなとこでしょうか。どこかの本の解説読みましたけど
'=' 演算子は部分式だからそれで副作用がでる順序は不定と。
間違ってたらツッコミお願いします。

でもこんなコード俺なら絶対かかねーっす(笑)

その解説↓
後置増分演算子などの式は副作用が保留されるが、次の評価順序点までに
達成される。構文で示される場合や、関数呼び出し演算子、&&, ||, ? :,
"," をのぞいて、部分式の評価順序、副作用が発生するところの順序は
不定である。
0193185NGNG
あやや。ちょっとまって。
評価順序じゃなくて。評価順序点をみてみると

評価順序点 (sequence point)
実行順序において副作用が完了する点。次の時点は評価順序点である。
1)関数呼び出し時の実引数の式を評価した直後。2)&&, ||, ? :,
"," の左オペランド評価の直後。3)全式の終了直後。

ここで関係しそうなのは3の全式かな。

全式 (full expression) 他の式の一部でない式. 初期化式. 式文の式.
選択文や反復文の制御式, for の3つの式, return 文. 全式の終わりは
評価順序点.

ということで、 c = c++; は 評価順序点の * 順序 * は不定なんですが
評価順序点は ; の後にくるので c = c++ までは評価順序点がこないから
; の後で評価(全式)され、 c = 1 になる。(依存しない)
のではないでしょうか?
0194185NGNG
でもなんかどうでもいいことですね。。会社いってきます。。
0195デフォルトの名無しさんNGNG
163みたなコードが書けるCに乾杯ヽ(´ー`)ノ
0196デフォルトの名無しさんNGNG
糞コード話が面白くないと思うなら、こんなスレッド見なきゃいいのに。
ゲーム機のメモリ確保関係の話は明らかにスレ違いだってわからないのか?
0197デフォルトの名無しさんNGNG
char buf[50][1000];
 :
 :
for(j=0;fgets(buf[j],2000,fp)!=NULL;j++);

‥‥‥ヲイ
0198デフォルトの名無しさんNGNG
sage
0199デフォルトの名無しさんNGNG
(或る場所)
func(1);

(違う或る場所)
func(2);

(また違う或る場所)
func(3);


void func(int a){
  int stat;
  if (a == 1){
    ・・・
} else if (a == 2){
    ・・・
  } else {
    ・・・
  }
  return stat;
}

はぁ、頭痛い・・・
0200デフォルトの名無しさんNGNG
関数定義がvoidなのにintを返せるの?
0201デフォルトの名無しさんNGNG
>>199
そのコンパイラを捨てなさい。
0202デフォルトの名無しさんNGNG
CWnd* pWnd;
pWnd->Create(...);

実体はどうした! そんなことで2時間も悩むな。
0203デフォルトの名無しさんNGNG
if( xxxx = 1)
↑=が1個たんねーぞ。さらに困ったことに意図した通り動いてるぞ。
0204デフォルトの名無しさんNGNG
199と203のコードを書いた奴って、どんなコンパイラを使ってんだ?
0205デフォルトの名無しさんNGNG
>>203
意図した通りってalways trueが意図したとおりなのか?(笑)
0206デフォルトの名無しさんNGNG
ていうか、コンパイラの警告レベル上げなさい。
0207デフォルトの名無しさんNGNG
-Wall で、ゴー。
0208デフォルトの名無しさんNGNG
>>202
staticメソッドそうやって呼ぶ人、たまにいなかったっけ?
普通はXXX::func()だろけど。
0209デフォルトの名無しさんNGNG
new/deleteを自分で書くって、わかってないと危険だよね
ここに書いている人はわかっているとは思うけど、
サンプルコードを見てみたい気がする。
誰か自信のある人みせてくれない?
0210デフォルトの名無しさんNGNG
>>208
そりゃ、うまくいくコンパイラもあるちゅーだけで
未定義の仕様でしょう。
0211デフォルトの名無しさんNGNG
>>209
はぁ?
new/deleteの自信たっぷりなコードってどんなだ?(笑)
0212デフォルトの名無しさんNGNG
>>211
明らかにアンタ厨房。煽りじゃないなら答えてやってもいいが、
operator new/deleteのコーディングが難しいのは常識。
0213デフォルトの名無しさんNGNG
operator newの責任は、メモリアロケーションまでだけだよ。
そんなに難しいか?operator newカスタマイズなんて、
よくやることだよね?

普通の
new hoge;
なんていうのは、new演算子が内部でoperator newを呼び出してる
んだよね。コンストラクタ起動は別の場所でされるんだよーん。
なんかプログラマー版で変な論争繰り返してる人がいるみたいだけど、
そういうわけでoperator newはmalloc程度の実装でいいんだよん。
0214デフォルトの名無しさんNGNG
責任問題で言えば、どんな書き方しても自分で責任さえとれればいいんじゃないの?
operator newに一般的に求められている事柄は、
1)new_handlerの定義
2)0バイトの要求を成功させる
3)メモリ不足時の無限ループ
4)内側のスコープでもnew宣言の成功
5)継承された場合への対処
などなど、一筋縄ではいかないというのは常識。
確かに212の言うとおり、211には厨房の兆しがあるね。
0215デフォルトの名無しさんNGNG
>>199って、void型関数内でintをreturnしてるって所にフォーカスが
行ってるけど、1関数内に全く関係ない機能が複数実装されている
ってのが本質じゃないの?
0216デフォルトの名無しさんNGNG
>>215
>1関数内に全く関係ない機能が複数実装されている

199からそれは読み取れないんじゃ?
0217デフォルトの名無しさんNGNG
199はフラグ変数やモード変数での分岐がやたらに存在する、
「勘違いした共通化」の例ですよね。経験の長いプログラマのコード
でも、結構よくみるやつですね。
0218デフォルトの名無しさんNGNG

&a hoge()
{
a fuga;
...
return fuga;
}

0219デフォルトの名無しさんNGNG
ORACLE+PRO*C開発環境にて
仕様「マスターAをトランザクションBでマッチングしながらアップデート
想定ステップ数200・想定工数3日」
2.5日寝てていいですか?ステップ数200をどうクリアしようかなぁ
0220>>212,214NGNG
え〜operator new/deleteの詳しい定義知らないと厨房ですか?
結構難しいと思いますよ。普通本にも書いてないし、
言語の仕様書を読むくらいの勢いじゃないと覚えられないでしょう。

ねぇ?
0221デフォルトの名無しさんNGNG
> 3)メモリ不足時の無限ループ
メモリ不足の場合は、throw bad_alloc();じゃなかったけ?

#VC++はこの辺の実装がぬけているけど。
0222220NGNG
>>221
いや、それはメモリが最終的に確保できなかった場合です。
newはメモリの割り当てが成功するまで、永久にループを繰り返します。
その中で毎回new_handlerをよんで、そのnew_handlerが
・どこか別の部分のメモリを解放してくれる
・例外を投げてくれる
・別のnew_handlerを設定してくれる
のを期待するのが正しい仕様です。
new_handlerが設定されていなければstd::bad_allocを投げます。

だから、new_handlerでプールの一部解放とか
やったりすることが出来て、仕様通りなら色々楽しいことが出来ます。

しかし仕様通り作ってる人がほとんどいないのは211、213をみても
よくわかりますけれど、こればっかりは仕方ないですね。
0223221NGNG
>>222
勉強になりました。
0224デフォルトの名無しさんNGNG
>1
とある自称VBプログラマーのソース(標準モジュール)の冒頭

Dim a as Integer
Dim b as Integer
Dim c as String
Dim d as Integer
Dim e as Integer
Dim a2 as Integer
Dim b2 as Integer
Dim c2 as Integer
Dim d2 as Integer
Dim e2 as Long

Type data
aa as Integer
bb as String
cc as String
End Type

Type data2
aa2 as Integer
bb2 as String
cc2 as Boolean
dd as data1
End Type


こんな調子で変数名つけてく上にコメント一切なしだから、バグでまくって
結局別の人間が1から作りなおしました。
0225デフォルトの名無しさんNGNG
話しを糞コードに戻して
今までに遭遇したなかで一番凶悪な糞コード

 #define int short

なんでコンパイル単位毎にintのサイズが変わるのか
わけがわからなかった。これを見つけた時には愕然としました。
犯人はダメダメ先輩でした。

番外編。コードではないが、
某外注さんからソースをもらって、調べていたが
#includeしているヘッダファイルがどこを探しても見つからない。
そしたらHidden属性にしていやがった。
発注元に対する嫌がらせかとおもった。
0226デフォルトの名無しさんNGNG
見えるようにしとけ。。。>225
0227デフォルトの名無しさんNGNG
よく見掛けるコード

if( a == 1 ) {
continue;
} else if( a == 2 ) {
continue;
} else {
if( a >= 3 ) break;
}

仕様書の通りに書いてるのか、はたまたバカなのか、こういう人は意外と多い。
0228デフォルトの名無しさんNGNG
>>227
よくわかんないですけど
それって1つめのifとelse ifは不要で

while ...
if ( a >= 3 ) break;

だけで十分ってことですよね?
0229>225NGNG
16bitコードからの移植ではたまにやる。
つーかintのビット長を16に仮定してある
コードを見た日にゃあそうするしかあるまい
0230デフォルトの名無しさんNGNG
>>229
typedef short int16;
あとはエディタの置換でがんばれ。
0231227NGNG
>>228
そう。
ループ開始〜終了は書かなかったけど意味はわかるでしょ?
更にクソな人で、

if( a == 1 ) {
break;

b=3;
a=0;
}

とか書く人もたまにいる。これで3日ぐらい意味不明のバグが!って悩んでた後輩もいた。
0232デフォルトの名無しさんNGNG
あれ? これって

>} else {
>if( a >= 3 ) break;
>}

この後に何かコードがあるんじゃないの?
だったら、

>while ...
>if ( a >= 3 ) break;

これだとaが1or2の場合そのコードが実行されてしまうよね?
それっておかしくないですか?
0233デフォルトの名無しさんNGNG
詳細は忘れたけど、昔某ファームウェアで見たソースで確かこんな感じ。
#define BUFFERSIZE 1024
定義子に2バイトコード使ってるのみたことあるんですが、これって
普通なんですか?
0234デフォルトの名無しさんNGNG
コンパイラ通るっけ?
少なくともVCははじく。
0235233NGNG
>>234
プラットホームがUNIXだったから…(コンパイラは忘れた)

あとこんな感じのコードもありました。

#define hogehoge? 100

?使うなよ…。
(VCは通らないと思うけど、UNIX開発環境のコンパイルは通った)
0236捨てファンNGNG
>>49
古い話題だけど

int i;
int func[]() ={ func1, func2, func3, func4 };

for( i=0 ; i< (sizeof(func)/sizeof(func[0])) ; i++ ){
if( !func[i] ){
/* エラー処理 */
}

これでいいじゃん。
呼び出す関数が増えれば配列に関数のポインタ加えるだけ。
0237デフォルトの名無しさんNGNG
>>236
> int func[]() ={ func1, func2, func3, func4 };
int (*func[])() ={ func1, func2, func3, func4 };

> if( !func[i] ){
if( !func[i]() ){
func[i]とfunc[i]()は意味が全然違うぞ
0238捨てファンNGNG
>>237
すまんさんきゅ
0239デフォルトの名無しさんNGNG
実は自分で書いて怒られた

malloc(0)
0240デフォルトの名無しさんNGNG
今やってるサイエンスアイのホンダのロボットの特集……
見てると明らかに糞コードがあったな。
case xxx:とstrcpyの嵐が数秒間スクロールしていったぞ。
0241デフォルトの名無しさんNGNG
>>236
引数が全部同じでいいときだけな...
0242デフォルトの名無しさんNGNG
>>240
case 867: とか見えたよ。トホホ。
0243デフォルトの名無しさんNGNG
>>241
引数が違う場合はどう実装するんだろう。
すべての関数を可変個引数として実装して、
自前で関数を呼び出すとか。あ〜環境依存するか。
環境依存させないためにはvoid **を利用すればいいのかな
それとも可変個引数を別の関数に渡す方法ってあったっけ?

……以上トリッキーの1でした、失礼
0244デフォルトの名無しさんNGNG
Cなら引数省略()で宣言してれば普通に可変個扱えるけど?>243
その場合引数はint型の大きさでスタックに積まれる筈。
コンパイラが型チェック省略するので。
でも危険だから確実に2個受け取る場合は2こ処理させる事。
昔のソースの関数テーブルは可変個引数使ってる例が多い。
0245デフォルトの名無しさんNGNG
ちょっと本題からずれているのでsage

>>244
引数がintの大きさで……って事は、要するに
インラインアセンブルなどでpush/callせよと言う事?
仮にそうだとすればx86系では動いてもalphaでは動かなくなるのでは?
そうでないなら詳しい話キボンヌ
0246デフォルトの名無しさんNGNG
引数のスタックに積まれる順番は決まってなかった気もするが。
(引数の評価順が規定されていないのは間違いないけど)

int main(void)
{
  void test();

  test(0);
  test(1, 2);
  test(3, 1, 2, 3);
  test(2, 'a', -1);
  return 0;
}

void test(int nparam)
{
  int i;

  printf("Extra Parameter %d: ", nparam);
  for (i = 0; i < nparam; i++) {
    printf(" %d", *(&nparam + i+1));
  }
  printf("\n");
}
0247デフォルトの名無しさんNGNG
>>246
呼び出し規約はベンダー依存だったはずですね。
やっぱり可変個引数をそのまま他に投げることは
一般的には難しいんでしょう。vprintfの様なマクロを用意するのがベストでしょう。
0248デフォルトの名無しさんNGNG
なにやら難しい話題が続いていますが、糞コードネタをちょっと。

char* p="abcdefg";

while(*p)
  ++*p++;

これは糞コードに分類されますか?
俺の勘だとぎりぎりアウトだと……
0249デフォルトの名無しさんNGNG
>242
制御やってる人ってcaseを並べることが多いよな。
あと、MFCを無理矢理Cで使った上、変数は全てグローバル。
俺はそのコードをいじることになって、本当に涙が出てきそうだった。
0250デフォルトの名無しさんNGNG
>>248
それは糞じゃなくて、トリッキーの方だと思うな。
糞プログラマーにそのコードは書けない。
しかし、そのコードを各プログラマーがいいプログラマーと言うわけでもない
0251250NGNG
って、しまった。
248のコード、文字列リテラル中身書き換えてるじゃん。
俺もバカバカ
0252デフォルトの名無しさんNGNG
やっぱアシモとかも力技で動かしてるんだろうなあと悟って
かな〜り幻滅したッス。
0253デフォルトの名無しさんNGNG
動くことに意義がある
0254デフォルトの名無しさんNGNG
プログラムは作った通りに動くとかいう名言あったよね
ド忘れしてちゃんと思い出せないのでキボーン
0255トリッキーの1NGNG
>>252
チームには色々な人材がいるだろうから、
悲しい結果になるのもわからないではないなぁ。

「プログラミングの心理学」にあるような
理想的なチーム運営が出来ればそのようなことも無くなると思うけれど、
それはかなり難しいのでしょう。

それでも253さんが言うように、最終的に動くところまで
こぎ着けているんだから、チームとしては成功だと思いますが。

とりあえず俺は、自分がそういうコードを書かないように気を付けよう。
0256デフォルトの名無しさんNGNG
>>240
>>242
caseを減らすだけでかなり高速化するんではないのか??
case867なんて・・・

strcpy... ホンダも所詮その程度の会社か
アトムまであと72年はかかるな
0257デフォルトの名無しさんNGNG
case は順番に書こうね。
0258デフォルトの名無しさんNGNG
caseの値で「予定値」まで最初から書くのはやめようね。
最低でも、納品版では使ってない行は消しておくれ
0259デフォルトの名無しさんNGNG
switch(xxx)
  case 1:
    処理A
  case 2:
    処理B
    break

意図的にcase1にbreakがないのやめれ
0260デフォルトの名無しさんNGNG
>>259
俺、思いっきりそれやるんだけど(笑
例えば
char *pa;
char *pb;
char *pc;
try{
 pa = (char*)malloc(〜);
 if( !pa )throw(1);
 ・・・処理・・・
 pb = (char*)malloc(〜);
 if( !pb )throw(2);
 ・・・処理・・・
 pc = (char*)malloc(〜);
 if( !pc )throw(3);
}catch(int n){
 switch(n){
   case 3:free(pc);
   case 2:free(pb);
   case 1:free(pa);
   default:break;
 }
}
こんな感じ。
メモリの解放はデストラクタにやらせろと言われそうだけど、
あくまで例なので、その辺は勘弁を(藁
0261デフォルトの名無しさんNGNG
>>260
no breakは一般的だというのには同意。
もっとも俺は必ずコメント/* no break */をつけるけど。

ただ、例のプログラム程度ならstd::auto_ptrを使うのが常識
ま、当然ただの例だとおもうけどね。no breakのプログラムって
例が難しそう。そういう点では260のコードは素晴らしいな。
0262デフォルトの名無しさんNGNG
>caseを減らすだけでかなり高速化するんではないのか??

なるか、バカ!
0263デフォルトの名無しさんNGNG
えーっ、
switch(xxx)
  case 1:
    処理A
    /* fall through */
  case 2:
    処理B
    break
コレでしょやっぱ。
0264デフォルトの名無しさんNGNG
int main(int argc, char*argv[] )
{
  switch( argc ){
  case 3:
   //2つめの引数の処理
  case 2:
   //1つめの引数の処理
   break;
  default:
   puts("usage");
   break;
  }
}
便利だよね。
0265デフォルトの名無しさんNGNG
>>262
caseを減らしてifで最適化したコードを書くほうが早くなるんじゃないのか?
0266void init()NGNG
case話ついでにひとつ。

switch(xxx) {
case xxx:
...
break;
casexxx:
...
break;
};

2番目のcaseがラベル扱いになり、処理されませんでしたとさ。
0267デフォルトの名無しさんNGNG
ふつーエディタの色分けでそんなミスしない。>266
メモ帳ならわからんでもないが
0268デフォルトの名無しさんNGNG
>265
アホ発見!
と言った所か。
0269void init()NGNG
>>267
あ、昔の話です。
最近は色分けされるから、コーディングしやすくなりましたね。
どんなターゲットでもVCのエディタを使ってます。

0270デフォルトの名無しさんNGNG
>268
そんなところだ。
0271名無しさん@EmacsNGNG
今いじってる糞コード。

複数のディレクトリを変数に格納するのに、ディレクトリ間に
デリミタを入れたリニアな char * を使ってる。

char *dirs = "/home/hoge^/home/fuga^/home/mona"

という感じ。ディレクトリ名に「^」が含まれる時はそこだけ
「^^」にしてエスケープしてる。
なぜ素直に char ** を使わない!?
0272名無しさん@EmacsNGNG
もういっちょ。

やたらとグローバル変数を使ってる。
まあ、それだけなら別にどうということもないが
その名前と内容が問題。

int temp_fd とか char *temp_ptr とか。
たのむからテンポラリ変数をグローバルで定義しないでくれ(T_T)


他にも

if (条件) {
} else {
hoge;
}

とかやってるし。なんで if (!条件) にしないんだ!
0273名無しさん@EmacsNGNG
まだあるぞ。

errno をマジックナンバと比較してる。
(errno == ENOENT) じゃなくて (errno == 2) になってる。
これは大丈夫なのか?

他にも、int を返す関数で常に一定値が返ってる (意味ねぇよ)
とかもあるな。
0274トリッキーの1NGNG
>>271
>char *dirs = "/home/hoge^/home/fuga^/home/mona"
>なぜ素直に char ** を使わない!?
それ以前にデミリタに'\0'を使えば、
少なくともエスケープの問題は回避されるはずだしね(笑)

>>273
intで一定値を返すのは、拡張性があるとも言えます。
将来エラーコードを返すかもしれないぞ、という主張の場合が多いです。
int main()で常に0を返す場合って良くあるのに、
void main()が(本来は)仕様で定義されていないのと同じですね。

もっとも今回の場合はさすがに「それはない」と言えますが(笑)
0275デフォルトの名無しさんNGNG
>>272 if (条件) else { hoge; }
たまにやってる人いるね。
後で、両方の処理をかくことを想定しているらしい。

0276デフォルトの名無しさんNGNG
>>272
あーごめん。俺たまにやるわそれ。
理由はほぼ>>275
でもって、たいていやらないでほったらかしにするんだな(ぉぃ
ちなみに、当然(!条件)もつかっとります。
0277デフォルトの名無しさんNGNG
某ファーム系の仕事で、
switch(code){
code CODE_A: …; break;
code CODE_B: …; break;
code CODE_C: …; break;
<中略>
}
のように、codeにより処理を変えて行うというロジックがあった。
(CODE_A、CODE_Bはあまり気にしないで)

で、後から「状態(status)が0だったら、CODE_Bの処理はしないで」
という仕変があって、その後、彼が書いた糞コード。

if(status!=0){
switch(code){
code CODE_A: …; break;
code CODE_B: …; break;
code CODE_C: …; break;
<中略>
}
} else {
switch(code){
code CODE_A: …; break;
code CODE_C: …; break;
<中略>
}
}

おいおい
0278デフォルトの名無しさんNGNG
>>277
こうやって糞コード+長い関数が日々量産されていくのか...
0279名無し~3.EXENGNG
case 867: とか出てきたのって、
コンパイラコンパイラが出したんでないかい?
状態遷移をなんかで表現しといてそれをCのコードに変換するようなのを
作ってたとしても不思議じゃないし、作っていそうなもんだ。
その出力なら人間が見てもよーわからんコードになるから
TVに映されてもOKということで。
0280271NGNG
>>274
>それ以前にデミリタに'\0'を使えば、

それだといくつのディレクトリが格納されてるのかわからんようになるぜ。
ディレクトリの個数を別の変数に保存しとかにゃいかん。
str* 系の関数が非常に使いにくくなっちゃうし、それはちょっとトリッキー。
あ、だから「トリッキーの1」なわけか(笑)
0281トリッキーの1NGNG
>>280
最後はデミリタ2つ繋げでしょう。\0\0という風に。
コードが書きやすかったので昔よく使ったんだけど、
今や方法はいくらでもあるなぁ。

\0の方がstr*系の関数を使いやすいと思ったけれどどうかな?
例えばchar *dirs = "/home/hoge^/home/fuga^/home/mona";
の場合、ディレクトリ毎に取り出すのにstrcpyを使えないし。
0282280NGNG
>>281
おお、なるほど。それならたしかにうまくいくな。

>\0の方がstr*系の関数を使いやすいと思ったけれどどうかな?
スマソ。書き方が悪かった。
char * に \0 デリミタを使って格納する場合は、char ** を使う場合に
比べて str* 系関数が使いにくい、という意味でした。
後者なら strdup(dirs[1]) とかできるけど、前者だと 2 つ目以降の
ディレクトリを参照するにはポインタをいちいち移動させにゃ
いかんよね。まあ 2 つ目は strdup(dirs + strlen(dirs) +1) でいけるけど。
0283デフォルトの名無しさんNGNG
>>277
似たような経験はあるな。その時の変更者のコメント。

「既に動いているロジックを変に組みかえると、関連するすべてを
 テストしなおさなければならないだろう?
 そういう苦労を考えたら、動作が保証されている部分は残しておき、
 新たなコードを加えるようにすることで、追加した部分だけのテストで
 済んで効率的じゃないか」

じゃあ、switchの前に if(statue!=0) と加えたことによる、既存部分への
分岐による変更はテストしないでいいのか・・・と聞いたら

 「switchの中はいじってないだろう」

と言われたわ。

※話は >>277 のソースコードに合わせて変えてますが
  話の流れはこんなもんです
0284デフォルトの名無しさんNGNG
グローバル変数で
int a;
int aa;
int aaa;
int aaa...;
…頼むから辞めてくれ(藁
0285いつでもどこでも名無しさんNGNG
>284
グローバル変数でなくても痛そうな気がする・・・。
0286デフォルトの名無しさんNGNG
>>284
そして、そのaは
あるところではループカウンタに
あるところではフラグに
あるところではスイッチに
あるところではステータスに
なるのであった・・・
0287ナナシサソNGNG
>286
そのaってのはハフマン符号木に対応してるんだろ。
どっかにbがあったりして。(藁
0288デフォルトの名無しさんNGNG
>>286
いやすぎ(w
0289デフォルトの名無しさんNGNG
自分もグローバルに int i ;を発見。文句じみたことをいったら
「もし関数内部で変数iを動的に定義するなら、そっちが優先されるから平気だよ」
などとひらきなおられてしまいました。生兵法怪我の元とはよくいったもんだ
0290デフォルトの名無しさんNGNG
>>284
どこにでもいるんだな・・・そういう奴

>>289
どこにでもいるんだな・・・そういう奴

ちなみに俺んとこでは、同じ言い訳をしておきながら、
その関数に与えた引数変数名iをにして関数内でグローバル参照したつもりで
バグりまくって悩んでたような記憶がある

俺じゃないぞ
0291デフォルトの名無しさんNGNG
いやでも、組み込みならやる事あるぞ
その方が短いコード出す場合があるのと、
メモリダンプでカウンタの値が見易いから
0292デフォルトの名無しさんNGNG
組み込みって、最近は携帯電話でもメモリがんがん使うのが流れじゃないの?
(聞いた話だけど)
0293デフォルトの名無しさんNGNG
逝って良し>292
0294デフォルトの名無しさんNGNG
>292
そういう携帯が自主回収される
0295ななしさんNGNG
char* p,q;
0296デフォルトの名無しさんNGNG
>>295
char*型のpにchar型のqでしょ。
全然問題ありませんが?
混乱するっていうならtypedefでもすれば?
それと「char*」という風にくっつけて書くのはどうかと思いますが。
(C++使いの方はなぜかこう書きますね。アホですか?)
0297ななしさんNGNG
>>296

いや、まさに記述法の問題を言いたかったのですよ。くっつけて
かいていることね。

一瞬、p と q がポインタかと思った。すぐ気づいたけどさ。
0298デフォルトの名無しさんNGNG
VBで、
dim i, j as integer
とかやると、i はバリアントになっちゃう、とかいうのなかったっけ。
最近VBいじってないから間違ってたらごめそ。
0299名無しさん@お腹いっぱい。NGNG
>>296
>(C++使いの方はなぜかこう書きますね。アホですか?)
 知ってて言ってると思うけどC++の教科書にはそういう書き方
 を推奨しているものがあるから。
0300296NGNG
こういうときはtypedefを使った方が良いですね。
ハンガリアン記法が嫌いな人でも型名に対しては以外と寛容でしょう。
#ifndef FAR
#ifdef __MSDOS__
#define FAR far
#else
#define far
#endif
typedef char char_t;
typedef char_t *pchar_t;
typedef char_t FAR *lpchar_t;
typedef unsigned char byte_t;
typedef byte_t *pbyte_t;
typedef byte_t FAR *lpbyte_t;
など
0301デフォルトの名無しさんNGNG
>>296
typedefの代わりにdefine使ってハマる奴とかいないかな。
おいらは見たことないけど。

#define PCHAR char *

PCHAR p, q;
0302296NGNG
>>298
現在VBはやってませんが、
最後にas integerで括ってるからi,jともintegerになるはずですが?
そうでなかったらイヤすぎ・・
0303296NGNG
>>296
あ、FARのマクロ定義間違ってる・・まあいいか。
0304296NGNG
>>299
なんで推奨されてるかって理由は知ってます?
わたしは覚えてません・・
こんな書き方を問題にするならtypedef使えよっていつも思うもので・・
0305トリッキーの1NGNG
>>304
推奨される理由、是非知りたいですね。

私は結構char* xという書き方をする人です。
引数ではまず間違いなくfunc(char* arg1)と書きますね。
あと、私は標準以上にコメントを書く人種で、
char* vary; // some temporary variable
などと書くので、1行に2つ以上宣言する事が少ないです。

と言い訳してみたけれど、やはりコンパイルエラーを誘発しそうですね。
個人的な感性として、char*型という書き方が気に入っているだけです。
0306デフォルトの名無しさんNGNG
Stroustrup大先生の趣味ということで決着がついたのでわ。
0307デフォルトの名無しさんNGNG
>>302

ならないよ。VB7なら、それでもいいんだけど。
0308302NGNG
VB7のことを言ってるんですが?
そんなこともわからないとは鬱すぎ・・・
0309ホンモノの302(=296)NGNG
あんただれ?>308
所で、わたしはサッパリですVBは。触わってたのってVer.2〜4の頃なので。
同じ宣言形式のPascalだとどうだったかな。
0310ホンモノの302(=296)NGNG
げえ、個人の趣味だったんですか>306
言語製作者とはいえ・・
0311デフォルトの名無しさんNGNG
c との互換性をとったんじゃないの..?
c++でcのソースがコンパイルできないっていうのはアレだし
0312311NGNG
あ かなりボケてた もう寝る..
0313デフォルトの名無しさんNGNG
char *xねぇ。
Cやりたてのころはもこんな風に書いてあった資料ばかり。
おかげでポインタ理解できなくて、Pascalいじってからようやく理解できたよ。
それいらい、typedefしてchar* xみたいにしてる。
0314デフォルトの名無しさんNGNG
>>313
char* xと書いた方が、型として認識しやすいですもんね。はじめの頃は。
やっぱchar *xは、初学者にとって混乱の元だと思います。
つまりchar_pointer xがchar pointer_xみたいな認識になるんじゃないかと。

なれりゃどうでもいいやね。実際最近は意識したことないし、
自分の書いたコードみると、両方いり混じってるし(´Д`;
0315313NGNG
>>314
>char pointer_x
まあ、そのとおりやね。
PascalにPointer型や
 type PByte = ^Byte;
 var p: PByte;
みたいな宣言があって一発でピンときたっていうかー、
あーそういうことだったのね、みたいな。

とは言え、最近は大分慣れたyo
厨房なカキコでスマソ(藁
0316デフォルトの名無しさんNGNG
>>307
VB7でその手の判断が変わるとなると、
糞コードな職場のソースは互換性がなくなることになるのか?
0317デフォルトの名無しさんNGNG
>>314
わしは職場では char *x と後につけるように習ったけどな・・・
0318デフォルトの名無しさんNGNG
変数定義を1行に複数個書くのは糞コード
と煽ってみる
0319こんなやつ?NGNG
int hoge; int moge; int poo;

と煽り返してみる
0320ついでなんでNGNG
条件式内で代入するのは糞コード

と煽ってみる
0321デフォルトの名無しさんNGNG
char *a;
は、*aがchar型になっているとかそんな理由だったようなきがする。
で、C++になって参照がでてきたときに、
char &a;
じゃ、なんか気持ち悪い、やっぱ、
char& a;
だろう。ってなことになったが、じゃあ
ポインタへの参照はどうなるの?やっぱ
char*& a;
だろう。ってなことになり、面倒なので、全部左側にくっつけちまえって
ことになったんじゃなかったっけかな。
0322デフォルトの名無しさんNGNG
そういや、最初の職場では char aでなく、必ず[]を付けて
char a[1];
char buf[3];

のように書き、初期化でも
memset( a, 0x00, 1 );

じゃなくて
memset( &a[0], 0x00, sizeof(a) );

と書けといわれたことがある。これってナンセンス?常識?
0323デフォルトの名無しさんNGNG
>>322
それってchar *a;と何の関係があるんだ?
ま。常識かと聞かれれば非常識ですね
0324デフォルトの名無しさんNGNG
>>322
 スマン、メリットが思い浮かばないんだが何のためにそんなことするの?
0325デフォルトの名無しさんNGNG
>>324
リークのチェックが目的じゃないか?
0326デフォルトの名無しさんNGNG
ポインタかどうか明示的に書いてるだけじゃねーの?
見たことはねーな。

>>322
おもろいやつ発見。ここはポインタの話をするスレだったのか。
じゃあキミも余計なコメントやめてポインタの話だけしなさい。
0327デフォルトの名無しさんNGNG
レジスタに割り当てられたくなかったとか?
0328デフォルトの名無しさんNGNG
COBOL出身プログラマが桁数(バイト数の意)を数えられないからだと見た。
0329デフォルトの名無しさんNGNG
struct foo1 {
  int a1;
  int b1;
  // :
};

struct foo2 {
  int a2;
  int b2;
  // :
};

struct foo3 {
  int a3;
  int b3;
  // :
};

// おんなじのが続く
// :

struct hoge {
  struct foo1 f1;
  struct foo2 f2;
  struct foo3 f3;
  // 続く
};
0330デフォルトの名無しさんNGNG
>>329 いったい何をするコードなんだろう...
0331デフォルトの名無しさんNGNG
同じ内容の構造体をやたらと複数定義してるってことかな?
それとも、今ごろstructしたらいっしょにtypedefもしとくぜってことかな?
0332デフォルトの名無しさんNGNG
>>330
僕は複数定義だと思う
0333332NGNG
う、前のレス、
>>331 だった
付かれてるのかな

ウツダシノウ
0334デフォルトの名無しさんNGNG
同じ内容といえば、一度使った変数は使えないと思い込んでた自称C得意のお馬鹿さんが
”引数を渡して、その引数をファイル名と見なして先頭〜バイトが〜なら指定の場所にバックアップ”
だけの処理で、グローバル変数80個ぐらい使ってて爆笑させてもらったことがある
0335334NGNG
雰囲気としてはこんな感じね

int ia, ib, ic, id, ie, ii, ik;

int head_check( int );

main( int argc, char *argv[] )
{
ia = argc;
if( ia == 1 ) {
ib = ia;
ib = ib+1;
ii = head_check( ib );

for( ik = ii; ik < 5; ik++ )
{
....
}
}

int head_check( int ta )
int tb, tc;

ic = ta;
if( ic == 3 ) {
id = ic;
id = id + 2;
tb = id;
return( tb );
}
else {
ie = ic;
ie = ie - 1;
tc = ie;
return( tc );
}
{
}
0336334NGNG
見た時、かなり高度なことでもやってるのかと疑いを持ってしまいそうに
なったよ、この38歳のおっさんに。今までどうしてたのか聞いたら
「ずっとCOBOL,最近Cを勉強している」とのこと。
参考までに見せてもらったCOBOLのソースもムゴかった。
0337329NGNG
失敬。>>332さんの通りです。
0338デフォルトの名無しさんNGNG
#define ZERO 0
0339デフォルトの名無しさんNGNG
>>334
けど、今時のコンパイラなら、最適化して大きな差はでなくなっちゃうんじゃないかな?
0340デフォルトの名無しさんNGNG
最適化以前に335のようなソースは労働時間の無駄ですね
0341デフォルトの名無しさんNGNG
>>329
もしかして単にintの二次配列?
0342329NGNG
*この場合は*二次配列じゃないです。でもやりかねない。
0343デフォルトの名無しさん NGNG
>>338さんが言ってる事やってるのってイタイの?
くそ?だめ?ごみ?

いや、おれの会社のコードに書いてあったから・・・・・
0344デフォルトの名無しさんNGNG
switch(type){
case A:
  処理A;
  break;
case B:
  処理A;
  break;
case C:
  処理A;
  break;
case D:
  処理A;
  break;
case E:
  処理B;
  break;
default:
  処理A;
  break;
}
0345デフォルトの名無しさんNGNG
int done = false;
while(done == false){
  ...
  done = func();
}
if(done == true+1){
  ...
}else if(done == true){
  ...
}
0346デフォルトの名無しさんNGNG
1日前の日付を獲得するのを、わざわざOracleのDDL呼び出しでやってた
0347デフォルトの名無しさんNGNG
>>343
> >>338さんが言ってる事やってるのってイタイの?
> くそ?だめ?ごみ?
yes! 定数名は意味を書くべきであって、値を書くべきではない。

0348     NGNG
>>345
switch文つかわなくてもいいじゃん
0349デフォルトの名無しさんNGNG
留学で会社辞めた部下がこっそり残していたコード。
#VBね

Select Case tbName
Case "course.csv", "COURSE.csv"
tbName = "COURSE"

Case "module.csv", "MODULE.csv"
tbName = "MODULE"

Case "lesson.csv", "LESSON.csv"
tbName = "LESSON"

Case "list.csv", "LIST.csv"
tbName = "LIST"

Case "item.csv", "ITEM.csv"
tbName = "ITEM"

Case "engineitem.csv", "Engineitem.csv", "EngineItem.csv", "ENGINEITEM.CSV"
tbName = "ENGINEITEM"

Case "schedule.csv", "Schedule.csv", "SCHEDULE.CSV"
tbName = "SCHEDULE"

Case Else
MsgBox LoadResString(InvalidTableError), vbCritical
SetConnCSV = False
End Select

。。。もうお前はコード書くな。
2年書いてこんなクソだったら一生何やっても無駄。
toupperとかlower使えっつーの。
0350デフォルトの名無しさんNGNG
>>347
#define ZERO '0'
#define ZERO "0"
#define ZERO 0
#define ZERO 0.0
など考えられるんだからいいんじゃない?


0351デフォルトの名無しさんNGNG
>>350
だからこそダメなのでは?
0352デフォルトの名無しさんNGNG
VB5にて

sub form_load()

if a = 3 then
goto NEXTDATA
end if

if a = 2 then
gosub NEXTDATA2
end if

end sub

といった感じで、メソッド一切なし、ずっとgotoとgosub。
解析しんどかった・・・

0353デフォルトの名無しさんNGNG
あと、全部の行に行番号が振ってあった。
0354デフォルトの名無しさんNGNG
>>353
N88BASICと呼ばれていた頃のソースを引き継いだならあきらめろ
N88BASICの頃からのPGが新規に作成したソースなら止めさせろ(又は辞めさせろ)
0355352=353NGNG
>>354
違う。VBで1から書いたソースだった。
で、その人はとっくにクビになってる。

俺がその会社に派遣されて1ヶ月で消えていった。
しかも最終日、出ていく前「お世話になりました」ではなく全員を
涙目で睨んで「ううっ!」とか叫びながら出てった(藁
0356352=353NGNG
そして、その会社の女性社員二名にだけ後で
 「あの時は悲しさのあまり何もいえなかったけどありがとう。
  今度一緒に食事にでもいこうね」
とメール打ってきて大爆笑でした。38歳ぐらいの独身さんだったはず
0357デフォルトの名無しさんNGNG
>>350
そういえばこんなのも。

#define HOGE_0000 0
#define HOGE_0001 1
...
#define HOGE_0007 7
...

なんのつもりだ。
0358デフォルトの名無しさんNGNG
>>357
コード中に定数を使っちゃだめです。っていうコーディング規約を勘違いして
こーゆーことする人、よくいますね
0359デフォルトの名無しさんNGNG
>>358
それだけならばまだいいが(?)、
修正する時に
#define HOGE_0007 8
なんてしちゃう奴...
(って話が『プログラム書法』にあったっけ)
0360デフォルトの名無しさんNGNG
クソコードかどうか分からんけど、俺の価値観からするとクソ
(以下の命名方とかのツッコミ無しね、スマソ)
typedef enum{
CODE1,
CODE2,
CODE3,
CODE4
} TCODE;
:
:
TCODE code;
if( (code!=CODE1) && (code!=CODE2) && (code!=CODE3) ){
//目的の処理。
}

否定的な正確が表れているなーと思った。
0361360NGNG
↑あっ、codeの中身は何かの処理でセットされてるよ。
 グローバル変数じゃないよ。
 (言わなくても分かると思うけど)

あと、「正確」→「性格」でした。ごめんなさい。
0362デフォルトの名無しさんNGNG
>>360
>if( (code!=CODE1) && (code!=CODE2) && (code!=CODE3) ){
if(!((code==CODE1) || (code==CODE2) || (code==CODE3)) ){
こっちの方がいいってこと?

べつにどっちでもいいと思うが...
0363デフォルトの名無しさんNGNG
>>362
一番いいのは、
if(code == CODE4){
だろう。
0364デフォルトの名無しさんNGNG
>>362
糞コードを書きそうな人発見(w
0365デフォルトの名無しさんNGNG
>>363
TCODEが増える可能性があって、CODE1〜3以外の時は必ず実行したいなら
糞コードじゃないけどな。
0366デフォルトの名無しさんNGNG
糞コードと言われないようにコメントつけにゃいかんな。
0367デフォルトの名無しさんNGNG
>>365

if(code >= CODE4){

と書くと、

typedef enum{
  CODE5,
  CODE1,
  CODE2,
  CODE3,
  CODE4
} TCODE;

にされたら死。なので、

switch(code){
case CODE1:
case CODE2:
case CODE3:
  break;
default:
  //目的の処理
  break;
}

なら、あるいは。
0368363NGNG
>>365
その可能性は確かにな。
ただ、あのコードを見る限りじゃ、これが最短かと。(必ずしも最善ではない)
0369デフォルトの名無しさんNGNG
「CODE4の時は実行」とは明確に分けるべき。
あのコードを見た限りじゃ拡張されることもあると取るのが自然。
363の方がどっちかっていや糞。
0370デフォルトの名無しさんNGNG
>>367
switch(code){
case CODE1: code1; break;
case CODE2: code2; break;
case CODE3: code3; break;
case CODE4: code4; break;
default: error; break;
}
のほうが良いと思うけど…。
defaultは本当にdefault(デフォルト)の処理か、
予想外のデータの時に使ってます。
どうなんだろう。
0371360NGNG
みなさん、参考になりました。
説明足らずでしたが、列挙型の定数は増える可能性はありまくりです。
というか、基本的に開発途上のコードだったら、増えるのは当たり前ですよね?
(ちがう?(^^;
360で挙げた例は、そうとう彼の性格を現していたように思えたので書きこんでしまいました。
前後のコードがまた凄いんだが・・

基本的に370の書き方が適当だと思ういますがどうでしょう?
でないと何のための列挙型なんだか、って感じしませんか?

いずれにしても、ほとんど説明ない状態で、色々な書き方やら考えが出てきて、
面白かったですし、タメになりました〜

0372名無しの笛の踊りNGNG
Javaなら、

interface Command{public void func();}
static Map commandmap = new HashMap();
static{
 commandmap.put("CODE1",new Command(){public void func(){/*無処理*/}});
 commandmap.put("CODE2",new Command(){public void func(){/*無処理*/}});
 commandmap.put("CODE3",new Command(){public void func(){なんか処理()}});
}

とかにしといて、SWITCHのかわりに、

Command command =(Command)commandmap.get(key);
if(command!=null){command.func();}

でどう?分岐が増えるたびにMapに追加。
0373デフォルトの名無しさんNGNG
>>346
1日前の日付を獲得するのは結構難しいとおもうけど
システムにもよるけと
-1でいいのはVBぐらいでないの
0374デフォルトの名無しさんNGNG
CTimeSpanとか使う。
0375デフォルトの名無しさんNGNG
372は勘違いしてるとしかおもえん。
ちなみにC++でも同様のコードは簡単。
この状況で間違っても使わないって言うか使えないけど。
0376デフォルトの名無しさんNGNG
「糞コード」って、なんて読むんだ?
「くそこーど」か?それとも「うんこーど」?
0377デフォルトの名無しさんNGNG
米異コードで、my codeと読みます。
つまり君のコードだよ。
0378デフォルトの名無しさんNGNG
よくわからない言語なんですけどループの中に


IF スキップする条件
SKIP
LOOP
ElSE
死ぬほど長い処理
ENDIF

ってのが何重にもネストしてるはダメだよね?
0379デフォルトの名無しさんNGNG
>>376
「クソ行動」と読みます
0380デフォルトの名無しさんNGNG
そいや、ifから次のelseまでが500ライン超えてるよーな処理見たっけ。
んでもってifの階層が9段階ぐらいあった
0381デフォルトの名無しさんNGNG
yaccの吐いたソースをメンテしたことあります
アクションの中でよかったけど
もとのソースなくすなよ
0382デフォルトの名無しさんNGNG
return("終了");
0383デフォルトの名無しさんNGNG
if( a != 0 ) {
continue;
b = a * 2;
break;
}
else if( a == 0 ) {
continue;
printf( "aが0になりました。終了します。\n" );
break;
}

return;


ナニコレ...
0384デフォルトの名無しさんNGNG
>>346
クライアントアプリで、Oracleサーバのマシンタイムが必要なときはやったことある。
ローカルタイムではクライアント毎に一致している保証がないからね。
0385デフォルトの名無しさんNGNG
>>382
returnの引数(とはいわねーか)を括弧でくくるのがダメってことだよね。
0386デフォルトの名無しさんNGNG
Sunの最近のccはsjisが埋め込まれたソースでもコンパイルできるのびっくりした。
すれ違いすまんsage

0387デフォルトの名無しさんNGNG
>>382
これって"終了"はスタックに積まれて、復帰後開放されるんじゃ
ないの?
仮にprinf("%s", func());で表示されると、開放されてるけど
ゴミとして残ってる内容を表示するだけだよね
どこまで(礼儀も含めて)正しいのか、イマイチ自信が無い
0388デフォルトの名無しさんNGNG
しねーよ。
>>387
0389デフォルトの名無しさんNGNG
mona.cpp
//////////////////////////////
#define _ 0
#define __ _
#define ______________ A___A
#define O MA E MO NA- ( ^∀^)
;int ______________ ( )
{int l = l | l
; return( (__)-_)
;}
//////////////////////////////
0390389NGNG
>>389
スペースがうまく排卵ね。スマソ。
0391デフォルトの名無しさんNGNG
スペースは&amp;nbsp;に変換してカキコしてね
0392389NGNG
>>391
アドヴァイスどうもです。
初心者板で変換して書いてみたけど、やっぱ駄目だ。
等幅フォントじゃないと無理そうだなぇ。
コンパイル通らなくなるのを覚悟で全角化するか...。
0393デフォルトの名無しさんNGNG
>>387
なんか勘違いしてないか?

const char *f1( void ) {
char str[] = "終了";
return str;
}
はやっちゃいけないけど、
const char *f2( void ){
return "終了";
}
は大丈夫だぞ。
0394デフォルトの名無しさんNGNG
// 行頭スペーステスト
void main(void)
{
&nbsp;&nbsp;&nbsp;hoge();
&nbsp;&nbsp;&nbsp;return;
}
// どうなるかな?
0395デフォルトの名無しさんNGNG
↑こんな感じで、できるよ
0396デフォルトの名無しさんNGNG
ありゃりゃん、できるようになったの?
0397デフォルトの名無しさんNGNG
&nbsp;テスト
&amp;nbsp;を入れてるのかな
0398デフォルトの名無しさんNGNG
そだよ
0399モナー板よりNGNG
・半角スペースは、2個以上連ねると、1個として表示されます。
 (半角スペースを続けて2個以上使わない)
・行頭の半角スペースは、消えて表示されます。
 (行頭に半角スペースを使うと、ズレます)
0400デフォルトの名無しさんNGNG
winsockの話。

TCPでデータレングスが不定でしかも数キロバイト程度のものも想定されるのに
一度しかrecv()してない……のはまあ許そう。

select() くらいしろよボケ。(泣)
0401デフォルトの名無しさんNGNG
う
 
    
  
   
    
  
   
   
  
        ぎゃあ。
0402400NGNG
書き忘れ。

…しかもシングルタスク。
0403デフォルトの名無しさんNGNG
>>400,402
わかりやすくて良いじゃん(藁
0404デフォルトの名無しさんNGNG
今日の仕入れたやつ

void function_Receive(....){

...
function_receive(....);

}

リカーシブかと思った。

こっちは、リカーシブだけど必然性がない
int function(int a)
{
if(a!=0)a=FUNCTION(a);
}

int FUNCTION(int a)
{

a=function(0);

}
0405デフォルトの名無しさんNGNG
似たような関数名を作りまくってるのは糞コード?

例
void dataFile
void dateFile
void datFile
void fileDate
void dayFile
0406デフォルトの名無しさんNGNG
>>405
そんなやつが俺の部下にいたらデビルチョップを喰らわしてやる。
設計レビュー段階でぶん殴ってると思うけどね。
0407デフォルトの名無しさんNGNG
>>405
結構微妙な線だな…
DateとDataは意味はぜんぜん違うのにたまたまスペルが似てるだけだし、
datFileもDATのファイルかも(ってこじつけだね)
例が悪いよ例が。
void Funca
int Funcb
char Func
なんてのは糞だろうな。
関数名に意味がない、まぎらわしい、関数説明もない正真正銘糞コード。
そんなのを見たことがない人はラッキーだ…。
0408デフォルトの名無しさんNGNG
ASSERT(0 <= nCnt < m_nNum);

あほかっ!


って悪態つこうとしたら、自分のソースでした。
しかも同じような間違いがほかにも数箇所・・・ハズカシイ
だめだ、帰って寝ます・・・
0409デフォルトの名無しさんNGNG
if(a==b){
d=e;
}else if(a!=b){
d=e;
}
なんだけど d=e;でいいはずなんだけど
a b d eとも実際は10文字ていどあるので
なおすのが恐いのでさわりません

修正が度重なるとこんなコードがよくできます。
0410405NGNG
>>407
例が悪いですか・・・スマ
でも、これ事実つーかこないだ実際にあったことだから、、、

やっぱ糞コードなんだよな。そう感じたのが俺だけじゃなくてひと安心
0411デフォルトの名無しさんNGNG
#if 0 のネストがやたらと多いやつ。
まあ気持ちは分かるが…正直見づらい
0412デフォルトの名無しさんNGNG
職場によっては #if 0 のネストが10階層になろうと、
一区切りつくまで消すことを許してくれない場所もあるよ。

以前消す時にバージョンダウンしまくりで大変だったさ
0413デフォルトの名無しさんNGNG
 学校の授業にて。
初めてのプログラミング演習はif文だけ習った状態で
2次方程式の解を求めなさい、というものでした。

俺も初めてながら試行錯誤し、複素解のときの結果も出せるようにがんばり、
できたプログラムのコードが数十行。

で、近くの奴が作っていたプログラムを見て唖然・・・
数百行(2〜300行くらいかな?)で、
しかも2次方程式なんだから結果はせいぜいx1, x2みたいに
変数二つあれば事足りるはずなのに、
x1, x2, x3, x4, x5, x6, x7, x8, x9;
と、結果を代入する(と思われる)変数が9個も。

 そんな個性的なプログラムを作った張本人はともかく、
初めての演習でいきなりそいつのソースをコピーして提出していた奴が数人。
もちろん、こっぴどく怒られましたとさ♪

あの頃は初々しかったなぁ(笑)
0414linuxなんだけどNGNG
main()
{
int i=0;
while(fork())printf("%d\n",i++);
}

なんでこのコードが死なずに動作しつづけるのかわからない。
だれか理由を教えて
0415デフォルトの名無しさんNGNG
>>414
やりたいことはわかるけどそれじゃfork先は0が返るだろ。
それじゃゾンビの街になるだけだよ。
こうやりたかったんじゃないのか?
while(printf("%d\n",i++))fork();

それでもforkに失敗すればプロセス生成されないから
作れるのは全部で1000個くらいだけだ。
lsとかは出来なくなるから嫌がらせはなるぴょん。
0416デフォルトの名無しさんNGNG
しっかし、
>>130-137 のやりとりはいつ見ても最高だなぁ
0417デフォルトの名無しさんNGNG
>>416
おもろいけど、これ自作自演だろ?
0418デフォルトの名無しさんNGNG
>>415
> それでもforkに失敗すればプロセス生成されないから
生成できなくなっても -1 を返すから終了しない。CPUは100%、プロセステーブ
ルは満杯。

> lsとかは出来なくなるから嫌がらせはなるぴょん。
嫌がらせとしてはカンペキかも。
0419416NGNG
>>417
多分自作自演なんだろうけど、
何か妙なオーラが出てますよね。
0420>419NGNG
オーラバトラー?
0421デフォルトの名無しさんNGNG
自分の名前を変数名、関数名にしちゃう奴。
コメントも書かなけりゃ、ドキュメントも残さない。
バグだけ残して会社辞めやがった。

void komatu( void )
{
int ko;
ko = koma();
koma2(ko);
kom(ko);
・
・
・
}

延々とこんなのが続く。
どーすりゃいいんだよ。ったく。
0422デフォルトの名無しさんNGNG
>>421
すげぇなソイツ。会社辞めてどうしたのか気になる…フリーター?
0423130NGNG
>>416
う〜む、おいらは130しか書いてないよ。
0424デフォルトの名無しさんNGNG
HSPの掲示板逝けば糞コード沢山あるよ。
0425errNGNG
糞コードばいざーい
0426名無し。NGNG
関数の引数が27個。
んでもって、一関数に1000を超えるステップ数。
そういう関数の似たようなものが多数。
次の日にマジギレして辞めた。
人生で一番の糞コード。
未だに酒の席の笑い種。
0427デフォルトの名無しさんNGNG
見てみてぇ・・・>426
0428デフォルトの名無しさんNGNG
>>426
全部グローバル変数で受け渡しされるより*多少*まし
0429デフォルトの名無しさんNGNG
>>426
数値計算関係だと良くあるよ。書いてる人は工学の専門家であって、
プログラマじゃないもんで、動けばいいやって感じ。数値計算ってこと
でFORTRANを使ってた人が多いから、その感覚でグローバル変数の
嵐。グローバルで i が宣言されてたり、forループ6段、全長1000ステップ
以上のmain関数1個のみとか。
0430デフォルトの名無しさんNGNG
自分一人がメンテして「それでヨシ!」と思えてるんなら
それなりにかっこいいな。
「プログラムで飯食ってんじゃねえ!」ってとこが。
0431デフォルトの名無しさんNGNG
>430
かっこいいかもしれんが、そいつの尻拭いは勘弁だ。
0432デフォルトの名無しさんNGNG
明日でここの会社終了なので、今資料を作ってて・・・気付いた
1年前にCで組んだソース、別の人がテストや修正を行ったのだが、

#ifdef DEBUG
fprintf( stdout, "取得ファイル名[%s]\n", sFname );
#endif

のように書いてある場所が全て

/* #ifdef DEBUG */
/* fprintf( stdout, "取得ファイル名[%s]\n", sFname ); */
/* #endif */

になっているのだ。これ何だ? と聞いたら

 「既にあったコードを消してはいけないといわれたので
  無駄な部分はコメントアウトしました」
と平気な顔で言われた。
(年上なので)○○さん、マクロ知らないんですか? と聞いたら
 「何のマクロ?」
何って、#ifdef DEBUG ですやん。と言ったら
 「DEBUGなんてマクロどこにも宣言されてなかったで」

糞・・・

0433名無しさん@お腹いっぱい。NGNG
あのう、ACCESSのフィールド名に日本語使ってるの見ると
むかっ腹立つの僕だけですか?
0434デフォルトの名無しさんNGNG
糞コードもいいが糞画面デザインも募集
0435デフォルトの名無しさんNGNG
極窓なんてどうですか>糞画面
0436デフォルトの名無しさんNGNG
ぬぁー
<DirectX 8.0a SDK>\samples\Multimedia\Common\src\D3DApp.cpp

の296行目から370行目あたりがかなーり糞に思えるんですけど・・・(;_;)
素直にgoto使えよ‥‥。
0437デフォルトの名無しさんNGNG
/* 変数 */
char a;
int b;
char c;

/* クリア */
char *p;
for(p=&a;p<=&c;p++) *p=0;

鬱です。
0438デフォルトの名無しさんNGNG
>>437
それって、マシンによっては落ちるんじゃ無かったかな。
HPの古いのなんかは、そーだった記憶がある。
0439デフォルトの名無しさんNGNG
>>436
引用きぼんぬ。問題にならなきゃ。
0440デフォルトの名無しさんNGNG
>>438
つーか、何をどこまでクリアするかまったく保証がない。
0441デフォルトの名無しさんNGNG
>>435
あれは逸品ですな
0442デフォルトの名無しさんNGNG
>>434
Vectorにあるゲームの「釣りへ行こうよ」
プログレスバーをそのまま利用した画期的ゲム。鬱だ。
0443デフォルトの名無しさんNGNG
確か、pag1テトラヘドロンのUIがすごかった。
0444デフォルトの名無しさんNGNG
>>439
そんなに糞でもないとは思うが、確かにgoto使えばもすこしキレイにはなる。

//&nbsp;Skip&nbsp;formats&nbsp;that&nbsp;cannot&nbsp;be&nbsp;used&nbsp;as&nbsp;render&nbsp;targets&nbsp;on&nbsp;this&nbsp;device
if(&nbsp;FAILED(&nbsp;m_pD3D->CheckDeviceType(&nbsp;iAdapter,&nbsp;pDevice->DeviceType,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formats[f],&nbsp;formats[f],&nbsp;FALSE&nbsp;)&nbsp;)&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;continue;

if(&nbsp;pDevice->DeviceType&nbsp;==&nbsp;D3DDEVTYPE_HAL&nbsp;)
{
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;This&nbsp;system&nbsp;has&nbsp;a&nbsp;HAL&nbsp;device
&nbsp;&nbsp;&nbsp;&nbsp;bHALExists&nbsp;=&nbsp;TRUE;

&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;pDevice->d3dCaps.Caps2&nbsp;&&nbsp;D3DCAPS2_CANRENDERWINDOWED&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;HAL&nbsp;can&nbsp;run&nbsp;in&nbsp;a&nbsp;window&nbsp;for&nbsp;some&nbsp;mode
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bHALIsWindowedCompatible&nbsp;=&nbsp;TRUE;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;f&nbsp;==&nbsp;0&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;HAL&nbsp;can&nbsp;run&nbsp;in&nbsp;a&nbsp;window&nbsp;for&nbsp;the&nbsp;current&nbsp;desktop&nbsp;mode
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bHALIsDesktopCompatible&nbsp;=&nbsp;TRUE;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
}
0445デフォルトの名無しさんNGNG

//&nbsp;Confirm&nbsp;the&nbsp;device/format&nbsp;for&nbsp;HW&nbsp;vertex&nbsp;processing
if(&nbsp;pDevice->d3dCaps.DevCaps&D3DDEVCAPS_HWTRANSFORMANDLIGHT&nbsp;)
{
&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;pDevice->d3dCaps.DevCaps&D3DDEVCAPS_PUREDEVICE&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwBehavior[f]&nbsp;=&nbsp;D3DCREATE_HARDWARE_VERTEXPROCESSING&nbsp;|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D3DCREATE_PUREDEVICE;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SUCCEEDED(&nbsp;ConfirmDevice(&nbsp;&pDevice->d3dCaps,&nbsp;dwBehavior[f],
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formats[f]&nbsp;)&nbsp;)&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bFormatConfirmed[f]&nbsp;=&nbsp;TRUE;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;FALSE&nbsp;==&nbsp;bFormatConfirmed[f]&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwBehavior[f]&nbsp;=&nbsp;D3DCREATE_HARDWARE_VERTEXPROCESSING;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SUCCEEDED(&nbsp;ConfirmDevice(&nbsp;&pDevice->d3dCaps,&nbsp;dwBehavior[f],
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formats[f]&nbsp;)&nbsp;)&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bFormatConfirmed[f]&nbsp;=&nbsp;TRUE;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;FALSE&nbsp;==&nbsp;bFormatConfirmed[f]&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwBehavior[f]&nbsp;=&nbsp;D3DCREATE_MIXED_VERTEXPROCESSING;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SUCCEEDED(&nbsp;ConfirmDevice(&nbsp;&pDevice->d3dCaps,&nbsp;dwBehavior[f],
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formats[f]&nbsp;)&nbsp;)&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bFormatConfirmed[f]&nbsp;=&nbsp;TRUE;
&nbsp;&nbsp;&nbsp;&nbsp;}
}

0446デフォルトの名無しさんNGNG
//&nbsp;Confirm&nbsp;the&nbsp;device/format&nbsp;for&nbsp;SW&nbsp;vertex&nbsp;processing
if(&nbsp;FALSE&nbsp;==&nbsp;bFormatConfirmed[f]&nbsp;)
{
&nbsp;&nbsp;&nbsp;&nbsp;dwBehavior[f]&nbsp;=&nbsp;D3DCREATE_SOFTWARE_VERTEXPROCESSING;

&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SUCCEEDED(&nbsp;ConfirmDevice(&nbsp;&pDevice->d3dCaps,&nbsp;dwBehavior[f],
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formats[f]&nbsp;)&nbsp;)&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bFormatConfirmed[f]&nbsp;=&nbsp;TRUE;
}

//&nbsp;Find&nbsp;a&nbsp;suitable&nbsp;depth/stencil&nbsp;buffer&nbsp;format&nbsp;for&nbsp;this&nbsp;device/format
if(&nbsp;bFormatConfirmed[f]&nbsp;&&&nbsp;m_bUseDepthBuffer&nbsp;)
{
&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;!FindDepthStencilFormat(&nbsp;iAdapter,&nbsp;pDevice->DeviceType,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formats[f],&nbsp;&fmtDepthStencil[f]&nbsp;)&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bFormatConfirmed[f]&nbsp;=&nbsp;FALSE;
&nbsp;&nbsp;&nbsp;&nbsp;}
}
0447デフォルトの名無しさんNGNG
#ifdef DEBUG
・・・・
#endif
というのがいっぱいあるけど
念のためにmakeをみたら defineされてた

0448デフォルトの名無しさんNGNG
>>447
それは担当者がヴォケなだけでコードが糞なわけではない
0449デフォルトの名無しさんNGNG
if ( strcmp(str,NULL) == 0 ) {
 /* 処理 */
}
0450デフォルトの名無しさんNGNG
>>260
亀レスなんだけど、

pa = NULL;
pb = NULL;
pc = NULL;

ってやっといて、
catch(){
if( pa != NULL ) free(pa);
if( pb != NULL ) free(pb);
}

じゃあかんのん?
0451デフォルトの名無しさんNGNG
とりあえずインデントが深すぎるコードは独断で糞コード決定
0452デフォルトの名無しさんNGNG
>>450
if( pa != NULL ) free(pa);
は、単に
free(pa);
でいいと思うけど。
0453>452NGNG
それはまずいよ・・ネタ?
0454デフォルトの名無しさんNGNG
>>452
free(NULL) って無動作でしたか。
自信が持てないので念のためNULLチェックしてますけど。
0455>>444-446NGNG
なんかそのクソ長いマクロ名、嫌がらせとしか思えないんだけど。M$か。
#defineし直せば?
0456>454NGNG
free(NULL)は危険。そのうち酷い目にあうぞ
0457デフォルトの名無しさんNGNG
>>456
ANSI C で「free(NULL) は何も実行しない」と規定され
てるけど。規格じゃなくて、別の問題?
0458デフォルトの名無しさんNGNG
無動作しないコンパイラなのか?
「そのうち」は来ないからだいじょぶ
0459デフォルトの名無しさんNGNG
NULLポインターの解放は安全のはずなり。
もし変になるとしたら、その環境のfreeの実装がおかしい。
っていうか、実際free(NULL)しちゃいけない環境があったのよ……(組み込み系のライブラリ)
0460デフォルトの名無しさんNGNG
>>459
組み込みだと ANSI C とはいっても freestanding でしょ?
それは hosted environment とは別物なんで、分けて考えた
方が良い。

freestanding environment だと、そもそもライブラリ関数は
全て implementation-defined だから malloc/free が無いか
もしれないし、あっても仕様が全然違うかもしれない。
0461デフォルトの名無しさんNGNG
C++がなくても問題ないといえる言語が出てくるまで・・・待て。
0462HOGENGNG
> 433
> あのう、ACCESSのフィールド名に日本語使ってるの見ると
> むかっ腹立つの僕だけですか?

健全な感覚。多言語(開発ツール)出身者なら、当然そう思うでしょうね。

識別子に平気で日本語文字を使いまくるのは、(やってよいことと悪いこと
のまともな判断ができない)ユーザー(糞PG)も悪いけれど、元はといえば、
新規インスタンスにデフォルトで日本語名を付けるメーカー(某毎黒粗太)
が悪いと思う。

最近では、市販の技術書や初心者向けの教本にまで、日本語の変数(オブジェ
クト)名が・・・。

有津打士農
0463HOGENGNG
> 462

> 多言語

他言語に訂正。

迂通出汁濃・・・。
0464HOGENGNG
> 462

> 市販の技術書や初心者向けの教本

自分で確かめた訳ではないが、知り合いの話では、金額の四捨五入に
浮動小数点数を使用したサンプルコードを載せたカス本まで出回って
いるようです。

日本の未来は暗い・・・。
0465てんさいぷろぐらむぁ(偽)NGNG
>>459
freeぢゃないけどVCでdelete NULL をすると死んだみたいだねぇ
さーびすぱっくで修正されたらしいけど。
つーかdelete NULL が良いんだか悪いんだか忘れました。
鬱だ氏脳
0466HOGENGNG
> 462

> 識別子に平気で日本語文字を

そういえば、害虫のバカPGが作ったAccessの腐れPGで、
括弧やスペース(空白文字)入りの識別子を見たことが
ある。コンパイル通るのが不思議だ・・・。(W

関り合いになりたくねぇなぁと思いました。

撃つ堕・・・。
0467デフォルトの名無しさんNGNG
>>457
free(NULL)は問題ないけど、あえてNULLチェックをかけるのは
解放したポインタ変数をNULLにしたいからって場合が多いと思う。
解放済みなのにfree()して酷い目にあうことあるし。

if(p)
{
free(p);
p=NULL;
}
0468デフォルトの名無しさんNGNG
>>467
その論調でいくと、ifは要らないよう({}内だけで十分)な印象を受ける
0469>468NGNG
関数呼出しのコストを下げる
0470デフォルトの名無しさんNGNG
delete (NULL);
はOKですよ。

>>469
たしかにその通りだが、468が言いたいのは
free( 解放済み領域を指すポインタ )を避けるというなら

free( p );// NULLであれば解放済みか確保前
p = NULL;

だけで十分ということでない?
0471デフォルトの名無しさんNGNG
私は、ACCESSではね日本語遣いまくつてます。
プログラムが10倍わかりやすいので。
変数、関数も日本語です。
S-JISコードでprintfに漢字コードを使うと
おかしくなるシステムなども経験したことがありますのて
恐いきもするのですが
変な英語名使うより読みやすいしめんてが楽です。

データベースの仕様書に住所(1)、住所(2)...となってたので
そのままフィールド名にして、後で作りなおしたことはあります。
VB・クエリー使わなければ、住所(1)も通ってしまうとこが恐い。
0472デフォルトの名無しさんNGNG
>>417
明らかにネタなので、放置ヨロピク。
0473デフォルトの名無しさんNGNG
>>472
>>417 -> >>471

鬱氏。
0474ほにゃにゃらNGNG
> 471

> 私は、ACCESSではね日本語遣いまくつてます。
> プログラムが10倍わかりやすいので。

質問です。

(1) 命名規約というのをご存知ですか?

(2) コメントという言葉、概念、意義をご存知ですか?
0475デフォルトの名無しさんNGNG
>>474
>>471 はネタなので放置ヨロピク〜。
0476デフォルトの名無しさんNGNG
ネタとは断言できないのでは?
コボル上がりの人ってよく日本語使うみたいよ。
0477デフォルトの名無しさんNGNG
ネタかどうかはともかく
使いてーという願いはかなりのプログラマが持ってないか?
0478デフォルトの名無しさんNGNG
プログラム=ドキュメントというのも一つの理想だよね。
0479デフォルトの名無しさんNGNG
>>476
大丈夫?
0480デフォルトの名無しさんNGNG
でもうちの課長だった人(その件でこけてクビになった)。
COBOLあがりでVBで日本語使ってたよ。
そういう人は設計も怪しいみたいで、全部直した時は3徹だったなぁ。撃つだ
0481デフォルトの名無しさんNGNG
「日本語が使える環境では日本語を使ってもよい」に一票。
ただし他に移行するとき苦労するのも事実。
0482デフォルトの名無しさんNGNG
ところが、VBの変数の規則には日本語がダメとは書いてないんだわ
漢字コード自体に.とか,()+-!@&$#と同じコードが入ってるやつで
どうなるか実験してみてね
0483デフォルトの名無しさんNGNG
俺も
「これはぜってー以降もしなけりゃ、メンテもしない」
って確信があるときは、日本語使うな。
ソース読みやすくていいよ。イヤホント
0484デフォルトの名無しさんNGNG
ニポンゴage
0485ほにゃにゃらNGNG
機種依存文字とか、特殊文字を識別子に多用すると、原因不明のエラーとかが
多発して、結構おもしろいかも・・・。(第三者的には)
0486名無しサンプリング@48kHzNGNG
Javaは、関数名にUnicodeが使えるんでしょ。
0487デフォルトの名無しさんNGNG
システムによれば
日本語のコメントもまずいことがあるぞ
コンパイラだと、コンパイルエラーが出るが

0488デフォルトの名無しさんNGNG
その昔、HDディスクがイカれて、その時の復旧作業(というか、
別HDへのコピー)の際、日本語ファイル名で散々苦労した記憶が
あります。
それ以来、可能な限りはファイル名には2バイト文字を使わないよう
にしている。
0489デフォルトの名無しさんNGNG
>>488
話の流れがいきなりずれているようなきがするにょ。マァイイケド
日本語ファイル名を使いたいときは、アーカイバーツールを使うようにしてるよ。
最近はグラフィカルに表示できて、普通のファイルシステムのように
使えるのも多いし、便利。
0490デフォルトの名無しさんNGNG
ローマ字にするとやたら長くなるよう名前の場合は日本語が使えたら
良いなぁと思うときがある。
前年同月売上目標達成率を
ZennenDougetuUriageMokuhyouTasseiRitu
なんて識別子にするのはタイプミスしそうだし、英語にしようとも
英語でどういうか判らんし。変に省略しても意味不明になりそうだ
し。
0491デフォルトの名無しさんNGNG
でも英語でタイプミスしてても「てへっ」で済むけど、
日本語で誤字してた日にゃあ・・・・バカではすみませんな
0492デフォルトの名無しさんNGNG
>>491
幸せな仕事場だな…英語でスペルミスでもバカじゃすまんだろフツー
0493デフォルトの名無しさんNGNG
millenium
0494デフォルトの名無しさんNGNG
>>492
昔からのソースを引き継いでいるとこだろ、英語でスペルミスなんて
当たり前のようにあるぞ

writeをriteとか、fileをfailとか
0495デフォルトの名無しさんNGNG
>>494
そういうのはスペルミスではなくて、単なる馬鹿。
0496デフォルトの名無しさんNGNG
#define CHECH(a) if((a)==0)
#define PROC(a,b) (a=(b))

CHECK(a) PROC(b,c);

あとから、メンテするもんは、びっくりするから
あんまりへんなマクロは使わないでね。
0497デフォルトの名無しさんNGNG
>>496
(・∀・)トテモイイ!!
0498デフォルトの名無しさんNGNG
>>496
一瞬ふつうじゃんと思わせるところがナイス
0499デフォルトの名無しさんNGNG
>>496
これは、>>492からの流れを受けたネタか?
0500デフォルトの名無しさんNGNG
#define CHECH(a) if((a)==0)
#define PROC(a) a=
#define ALLOC(a,b) (malloc(a*(b)))

CHECK(a) PROC(b) ALLOC(2,1024);
0501デフォルトの名無しさんNGNG
CHECHでなくてCHECK すんません

func(a) foo(b,c);
0502デフォルトの名無しさんNGNG
>>500
すげえな。厨房マクロ禁止令出してえ…
0503デフォルトの名無しさんNGNG
CHECK...

CHECH...

???
0504デフォルトの名無しさんNGNG
int filetype = 0; /* 初期値 */
int fileopenflag = 1; /* ファイル初期値 */

void ****_init()
{
/* 初期設定 */
〜
}

int ****_initbuffer()
{
/* 初期設定 */
〜
return( ret );
}

void ****_**_set()
{
/* 初期設定 */
}

void ***_check()
{
/* チェック */
}

void ***_setdata()
{
/* 初期化 */
}

コメントずっとこの調子。しかもこれ以外なし。
解析死にそう・・・
0505デフォルトの名無しさんNGNG
>>500
多分作者はアセンブラ使いだったんだろう
0506デフォルトの名無しさんNGNG
>>504
まあ、日本語があるとちょっと和むし・・・
ってそういう問題じゃねーよな。御愁傷様
0507糞コーダー必読書NGNG
http://www.pro.or.jp/~fuji/computerbooks/c/c.modula2.html
0508デフォルトの名無しさんNGNG
↑最古ー
0509デフォルトの名無しさんNGNG
>>507
リンク跳んだら関西大学じゃん・・
結構良い大学なのに授業内容は様々ね。
0510天災NGNG
>>507
#define FUNCTION
#define Main() void main(void)
#define VARIABLE {
#define BEGIN
#define END }

なんじゃこりゃ。
0511デフォルトの名無しさんNGNG
http://www.res.kutc.kansai-u.ac.jp/%7Enakagawa/book.html
507のリンク先のソースすっげー。
最初ネタかとおもたよ。

Modula-2バリにやりたいなら最初からModula-2使えよ・・・。
さすがに、Pascal使いのオレも引くよこれ。
0512デフォルトの名無しさんNGNG
まあプリプロセッサを好き勝手に使ってみるってのは
誰でも厨房のころに一度ははまるものでしょ。
気持ちはわからないでもない。

それにしても糞コード書き散らす大学教授って結構な割合でいるよな。
人間関係気にして誰も指摘してあげないんだけど(藁
0513デフォルトの名無しさんNGNG
教授や博士はプライドだけは高いから・・・
0514εNGNG
>>494
fileをfailなら、俺も見たことあるよ。
fileとfailじゃ意味が全く違うからねえ。
0515デフォルトの名無しさんNGNG
スペルミスで失敗。駄洒落?
0516デフォルトの名無しさんNGNG
クソコード?
汎化のみで分析(?)されたオブジェクト指向「風」ソース。
なにか一つのベースクラスに、ごてごてと機能が実装され、
そいつがありとあらゆるクラスに継承されている。
こうなったら、ベースクラスのメンバ変数なんて、グローバル変数と変わりなし。
コンセプトがはっきりしない継承は使うな!
グループ開発では、継承禁止のルールにしたほうがスムースに開発進んだりします。

あと、C++ではSmallTalk風に継承をつかった分析をしてはいけないようです。
どっかで読みましたが、C++の設計者が言ってるらしいから間違い無いでしょう。
小さいクラスとテンプレートで実装するのがC++流だとか。
つまり、STLとかiostreamとかの標準クラスの実装に従えって事すね。
#最近のiostaremはテンプレートで実装されてます。ムカシは違ったけど。
0517デフォルトの名無しさんNGNG
そうそう。
小さいクラスこそ C++ の美しさ。
大きいのはどのクソooplでも出来る、
ただのクラス。
0518デフォルトの名無しさんNGNG
for(i=0;i<0100;i++0)テン点々

int a=0xFFFFFFFF;

わざとかい
0519デフォルトの名無しさんNGNG
for(i=0;i<0100;i++) sorry
0520デフォルトの名無しさんNGNG
アホなPascal 使いがCを使うときに
#define BEGIN {
#define END }
するという都市伝説があるが、本当なのか?
証言求ム。
0521デフォルトの名無しさんNGNG
Modula-2だろ?>520
ご丁寧なことに、大学で教えてたらしいぞ。
0522デフォルトの名無しさんNGNG
不細工だとおもいつつ時間がないのでやりました
文字列を表示して改行する専用の関数print(char*);があるとしてください
#define TITLE1 "gomennasi"
#define TITLE2 "kaigousitara komaru"

print(TITLE1 TITLE2);

0523デフォルトの名無しさんNGNG
>520
507のリンク先でも名前のでている「Cプログラミング診断室」
という本(Webもあり)で、その実例が載っているぞ。

>522
Putsでなく?
0524デフォルトの名無しさんNGNG
int a;
a = 5; /* aに5を代入する */

…いや、確かにそうなんだが、コメントになってない…。
0525デフォルトの名無しさんNGNG
value = atoi(argv[2]);
0526デフォルトの名無しさんNGNG
>>525
見逃しておくれ・・・
0527デフォルトの名無しさんNGNG
>>525 のどこが糞なのか分からん…
0528デフォルトの名無しさんNGNG
コマンドラインのユーザー入力なんていう「汚染された」文字列を
いきなりatoiなんていう特定フォーマット
(ここでは数字)キメウチの関数にぶっこんでるからでわ?

#ふと、atokと書きそうになった…
0529デフォルトの名無しさんNGNG
>>528ワラタ
日本語変換ライブラリ関数atok()
0530デフォルトの名無しさんNGNG
>>528

>いきなりatoiなんていう特定フォーマット

なんで1行しか書かれていないのに、イキナリって判るん
だろう?
謎だ。。。
528は引数をかならずピーコしてから取り扱うの?
0531デフォルトの名無しさんNGNG
おいらのコードなんだけど、↓は糞かな?

int line;

try{
 HRESULT hr;

 hr = ...

 if (line = __LINE__, FAILED(hr)) throw (hr);

 hr = ...

 if (line = __LINE__, FAILED(hr)) throw (hr);

 // 以下延々と・・・。
}
catch(HRESULT hr)
{
 string str = ... // hr に対応したエラーメッセージ
 cerr << line << "\t" << str.c_str() << endl;
}
0532デフォルトの名無しさんNGNG
>>530
うん、それにatoiはその辺結構安全な関数だ。
sscanf使うならともかく。
使い捨てなら普通にそう書いても別に問題なし。
0533デフォルトの名無しさんNGNG
argv[2] == NULLのときにいきなり例外で落ちるのでは?
0534>525NGNG
引数が指定されなかったらだめということだと思う
0535534NGNG
かぶった
0536デフォルトの名無しさんNGNG
>>531
ifの条件が良く読めないのだけど、どうゆう動きするの?
カンマで区切ったら、どうなるの?
FAILEDのマクロってどんなの?
lineに行番号代入したら常に真じゃないの?
0537デフォルトの名無しさんNGNG
>>533 >>534
その辺がチェックしてあるかどうかは
1行だけ抜き出されてもわかんないじゃん。
0538デフォルトの名無しさんNGNG
>>536
C++言語には、",演算子" という二項演算子があって、
左、右の順で評価され、式の値は右側の式の値になります。
LISP の PROGN と似ていますね。

FAILED というのは英語で「失敗した!」という意味で、
普通は何かの実行に失敗したかどうかの判定マクロの名前だと
思われます。
0539デフォルトの名無しさんNGNG
>>538
補足なんだけど、Cからだよ。

>>531
糞じゃないと思うが。
でも、以下のようだとイヤなり。

void foo( int, int, int );
int main( void )
{
int i, j, k ;
i=0;
  foo( i, (j=i, j+8), (k=j, k+8));
}

つーか、質問。
cerrストリームに出力して大丈夫なの? デバッグコンソールに出力するよう
実装されているのかな!?
俺、VC環境で開発してないから、ふとどうなのかなと。
0540デフォルトの名無しさんNGNG
>>530
>なんで1行しか書かれていないのに、イキナリって判るん

げ。ご指摘の通り。

>528は引数をかならずピーコしてから取り扱うの?

引数であるポインタそのものはピー子するときは結構有るかな。
hoge=argv[2];
とか。

0541デフォルトの名無しさんNGNG
>>531

エラーごとに例外Object(ってのかな)のClassを
適切に使い分けたりしたら、少し綺麗になったりしないかな?

0542なNGNG
FORTRANのころ、
IF( なんとか) THEN
   処理
   GOTO 10
ENDIF

IF(かんとか) THEN
10 処理
ENDIF

他のIFのネストの中にGOTOするんじゃない。

0543デフォルトの名無しさんNGNG
私が書いたりした。

(int)((unsigned int)n)

nを正の数にしたりする。
だめ?
0544デフォルトの名無しさんNGNG
>>543
ならないと思うのは気のせいか?
0545( ´∀`)さんNGNG
自分で型処理書けばできるんだろうけど。
0546デフォルトの名無しさんNGNG
cで
if(a==b|| a==c|0x0010)・・・
悩んだが導管がえてもいみがない
a==(c|0x0010)だとおもうが そうするとうまく動かない
0547デフォルトの名無しさんNGNG
>>544
いや、ならないからこのスレに書いているのではないかと。
(int)((unsigned int) -1) == -1
0548ぺがさす流星拳☆NGNG
 既に7〜8年の間、VBひとすぢでやってきたプログラマが、
Option Explicitを知らなかった。

 泣けてくる。
0549デフォルトの名無しさんNGNG
ヘルプ見りゃ書いてあるんじゃないの?>>548
おれ仕事で覚えたとき最初の2、3日で見つけたぞ。
VB2(16bit)〜4(32bit)の時代だけど。
0550549NGNG
つーかあれ無しでまともなプログラム完成できるのか?
0551デフォルトの名無しさん NGNG
C言語で、voidでmainを定義しているのをよく見る。
0552>551NGNG
もうそのネタ飽きた
0553ぺがさす流星拳☆NGNG
>>550
 彼は自分が使用した変数の一覧を、Excel上で
管理してました…。

 泣けるを通り越して、尊敬します。
0554デフォルトの名無しさんNGNG
>>549
>ヘルプ見りゃ書いてある

ヘルプにそれを望むのはどうかなあ?
ヘルプとかの辞書系情報って、字面は知ってるが意味を知らないモノを
探すものでしょ?字面すら見覚えがない状況では役立たず。
まぁインデックス一覧を眺めておくのはお勧めするけど、
最初から意味全然知らない単語は、眺めても記憶にひっかからないんで、
あるレベル以上にのみ通用する手じゃないかと。

>>553
そういうのを二重管理と呼びます。
二重管理状態は「なんとかして解消できないか?」と
常に心を悩ますに値する問題です。
つまり、さっさとやめれ。
プログラムソースの場合は、ソース側で一元管理する以外に
よい方法は無いはずなので、そうすべき。
0555デフォルトの名無しさんNGNG
二重管理状態で思い出した

#define STRING1 "mosimosi"
#define LN_STRING1 8
#define STRING2 "kameyo"
#define LN_STRING2 6
というふうに 延々と定義してあるの

0556デフォルトの名無しさんNGNG
こんなのがありました。

for (int i = 0; i < 10) {
switch (i) {
case 1:
func1();
break;
case 2:
func2();
break;
case 3:
func3();
break;
case 4:
func4();
break;
case 5:
func5();
break;
case 6:
func6();
break;
case 7:
func7();
break;
case 8:
func8();
break;
case 9:
func9();
break;
case 10:
func10();
break;
}
}

これに100点をあげたいのですがどうですか
0557デフォルトの名無しさんNGNG
>>554
>二重管理状態は「なんとかして解消できないか?」と
>常に心を悩ますに値する問題です。

するどい言だ。
0558デフォルトの名無しさんNGNG
>>556
いや、10個しか繰り返していないから10点です(ぉぉぉ<号泣
0559デフォルトの名無しさんNGNG
>>554
>プログラムソースの場合は、ソース側で一元管理する以外に
>よい方法は無いはずなので、そうすべき。

純粋VBじゃなくてVBSだったんじゃない?
スクリプト言語の場合プログラマによってはソースに大漁に
コメント書くのを嫌がる事もありそう。
0560559NGNG
大漁>大量、失礼しました。
0561デフォルトの名無しさんNGNG
コメントが嫌だからどうこうという問題じゃなくて、
#というかコメントを書けば管理したことになるもんでもないし
なにごともソースを中心にすべきなんじゃないの?という話です。

#UMLとかからのコード自動生成環境でも使っているなら
#話は別だが。
0562デフォルトの名無しさんNGNG
あんまり大した事ないけど
C++でのこと:

bool operator>(const hoge& x, const hoge& y) {,
&nbsp;if (x > y)
&nbsp;&nbsp;return true;
&nbsp;else
&nbsp;&nbsp;return false;
}

という感じで延々と全ての関係演算子を定義してあった…。
ちゃんと動作すんのはわかるけどさ。
0563ゴルァ!!NGNG
if( a = 1 ) {
…
else if( a = 2 ) {
…
else …
else if( a = 255 ) {
…
}
0564デフォルトの名無しさんNGNG
>>563
しかも代入文になってるし・・・
0565デフォルトの名無しさんNGNG
>>562 それ本当に動作するか?無限再帰になっているように見えるが
0566562 >565NGNG
書き損じてた!

if (x > y) の部分は比較が適切に行われるようになっていて、
たとえば if (x.value() > x.value()) とでもしてください…
0567↑NGNG
また間違えたよ。if (x.value() > x.value()) ⇒ if (x.value() > y.value()) ね
0568565NGNG
>>567 誤記ね、了解っす。
#include <utility>
using namespace rel_ops;
この2行があれば、全ての関係演算子を定義する必要なんてないのにねぇ。
0569デフォルトの名無しさんNGNG
>>568
あ〜、標準ライブラリにこういうの入ってるのか。
気付かなかったから自分で書いちゃったよ。次にリファクタリングする
ときに標準版を使うように書きなおそ☆
0570( ´∀`)さん NGNG
 先週退職したプログラマ(笑)の成果物を、今ごろレビューする羽目に。

 MsgBox "日計元表て〜ぶるのキ〜項目でぇ、顧客情報て〜ぶるがヒットしないのぉ☆"
     & strCRLF & "直ちにお近くの技術員を、たたき起こしてねっ☆"

 …き、貴様…てめぇは自分の上司に向かってでも、そんなクチをききやがるか…
0571デフォルトの名無しさんNGNG

どうしても

char hoge[1024];
:
:
if (hoge[0] == NULL) {
:
:
}

と書きたいらしく、そう書いた場合に if の行で警告されるような
処理系だった為

#undef NULL
#define NULL 0

してあった。
0572デフォルトの名無しさんNGNG
バグ治してと言われて、問題のソースを見てみたら

if ( &hoge[0] != NULL )

私には何をしたいのか理解できませんでした。
0573デフォルトの名無しさんNGNG
nantonaku, age
0574デフォルトの名無しさんNGNG
>>571
キャスト使えって話ね。

>>572
スタイルの問題でしょ。
&hoge[i]って書くかhoge+iって書くか。
確かにその場合はhoge!=NULLって書くのが普通だが。
0575デフォルトの名無しさんNGNG
>>574
多分違う。文字列なんだから文字列終端を検出したいんじゃないかな?
> if (hoge[0] == NULL) {
if (hoge[0] == '\0') {

> スタイルの問題でしょ。
これも違う。&hoge[i]が配列内ならNULL値を返すことはありえない。
つまり、if ( &hoge[0] != NULL ) は必ず真をかえす。

規格上では配列外のアドレス演算は未定義なのでNULLを返しても良いが
それはプログラムのバグである。

# なんか最近レベルが下がってきたな...。
0576デフォルトの名無しさんNGNG
既出かもしれんが、
memset(hoge, NULL, sizeof(hoge));
はやめて欲しい・・・。ま、ちゃんと動くんだけど。
(個人的にはsizeofの()もやめて欲しいんだが、sizeofでは必ず()を付けろ
なんていうコーディング規約があったりして萎え)
0577576NGNG
うぐっ。
s/hoge/&hoge/
0578デフォルトの名無しさんNGNG
>>576
似たようなコードを見たことがある…。

f(char s[])
{
memset((void *)s, NULL, sizeof(s));
strcpy(s, ...

佐藤さん、あんたのコードだよ。
いったい何年プログラマやってんだ、てめーは?
0579デフォルトの名無しさんNGNG
>>575
> if (hoge[0] == '\0') {
あ、そうだね。

> これも違う。&hoge[i]が配列内ならNULL値を返すことはありえない。
> つまり、if ( &hoge[0] != NULL ) は必ず真をかえす。
これはhoge+iを&hoge[i]ってスタイルで書く人が
hoge!=NULLってのを&hoge[0]!=NULLって書いたのかなと思った。
0580デフォルトの名無しさんNGNG
>>575
> if (hoge[0] == '\0') {
あ、そうだね。

> これも違う。&hoge[i]が配列内ならNULL値を返すことはありえない。
> つまり、if ( &hoge[0] != NULL ) は必ず真をかえす。
これはhoge+iを&hoge[i]ってスタイルで書く人が
hoge!=NULLってのを&hoge[0]!=NULLって書いたのかなと思った。
0581デフォルトの名無しさんNGNG
NULLはポインターだけに使うのがよろしい
0582デフォルトの名無しさんNGNG
ポインタ変数に0を突っ込んだり0と比較したりするのはやめてほしいナリ
0583デフォルトの名無しさんNGNG
NULL==0症候群の人たちに教えてあげたら?
処理系依存ですって。
0584デフォルトの名無しさんNGNG
今さら何言ってんだ。。。
0585デフォルトの名無しさんNGNG
>>583のように処理系依存と唱える奴に限って、
自分のプログラムは、依存しまくりなものしか作っていない。
0586デフォルトの名無しさんNGNG
>>582
なんで?

>>583
NULL != 0 な処理系もあると?
0587デフォルトの名無しさんNGNG
>>582
#define NULL (void*)0

お前のコンパイラではどうなってる?

0と(void*)0の違いはわかるか?
0588デフォルトの名無しさんNGNG
>>587
ん?
>>582はポインタには0を使わずNULLを使えって言ってるのでしょ?
0589デフォルトの名無しさんNGNG
だから0と(void*)0の違いを(以下略
0590デフォルトの名無しさんNGNG
>>583
処理系依存じゃないだろ。
(void*)0か0かしらんがとりあえずNULLは0だろ?
0591デフォルトの名無しさんNGNG
>>589
違いはもちろんわかるし
わかってるからこそポインタに0を使わずNULLを使うべきだと思うのだが。
0592587NGNG
すまん誤爆。>>587は>>586へのツッコミだ

× >>582
○ >>586

許してくれ>>582
0593デフォルトの名無しさんNGNG
C/C++では0はNULLと同じ様にポインタの意味で使える
ポインタとして0を使用した場合は、
コンパイルの段階でその処理系における「無効ポインタ」
に変換される。
実際にそういった変換を行なうかどうかは処理系による。
0594586NGNG
>>587
ポインタが現れる文脈では、違いなんかないよ。
0 も (void *)0 も、どちらも null pointer constant だ。
0595デフォルトの名無しさんNGNG
>>594
もーいっぺん>>593をよ〜く読め
0596!586NGNG
>実際にそういった変換を行なうかどうかは処理系による。
0が「無効ポインタ」に変換されない処理系もあるわけ?
0597デフォルトの名無しさんNGNG
C言語の定義によれば、ポインターを書くべきところに現れた定数0は、コンパイル時にヌルポインターに変換される。
0598デフォルトの名無しさんNGNG
C FAQ 5.2より。出典を明示しろ。
0599デフォルトの名無しさんNGNG
sizeofを()で囲むのはださいのですか?
0600デフォルトの名無しさんNGNG
結局>>587>>591のいう「違い」って何よ?
0601デフォルトの名無しさんNGNG
>>600
0は現れる場所によって扱われかたが違う。
NULLは「ここはポインタ演算ですよ」と人間に明示するだけで、
実際にはポインタ演算をしていない場所でも使用できてしまう可能性がある。
例えば、
int a = NULL;
この文はNULLの定義が
#define NULL 0
の処理系の場合、合法となってしまう。
それを防ぐために
#define NULL (void *)0
と定義する事によって↑の様な文をエラーとしている。
実際には(void *)はチェックの目的以外必要無い。
0602600NGNG
>>601
NULLの定義じゃなくってさあ、
0と(void *)0の違いを聞いてんのね。

>>587で、
>0と(void*)0の違いはわかるか?
なんつってんだから、当然説明できるっしょ。
0603デフォルトの名無しさんNGNG
それより誰か
#define NULL (void *)0
に突っ込めよ。

こいつの作ったヘッダは使いたくねーな。
0604601NGNG
>>602
おれは>>587じゃないけどさ、あの説明でわかんないの?
0は0。場所によってコンパイラの解釈は変化する。
(void*)0は(void*)にキャストされた無効ポインタ。
0605デフォルトの名無しさんNGNG
>>603
キミとは仕事したくないよ(w
0606デフォルトの名無しさんNGNG
c:\bcc55\includeのヘッダファイルを
秀丸のgrepで引っかけた結果です。

edkmdb.h(575): #define NULL_RESTRICTION 0xff
lmaccess.h(630): #define NULL_USERSETINFO_PASSWD " "
lmcons.h(192): #define NULL 0
lmcons.h(194): #define NULL ((void *)0)
snados.h(47): #define NULL ((void *)0)
windef.h(57): #define NULL 0
windef.h(59): #define NULL ((void *)0)
wingdi.h(100): #define NULLREGION 1
wingdi.h(1582): #define NULL_BRUSH 5
wingdi.h(1586): #define NULL_PEN 8
winldap.h(1940): #define NULLBER ((BerElement *) 0)
0607デフォルトの名無しさんNGNG
>>606
で?何が言いたいの?
0608デフォルトの名無しさんNGNG
607はヴァカと言いたいらしい
0609デフォルトの名無しさんNGNG
で、 >>600 は理解したのか?
0610582NGNG
何人かの方は分かってらっしゃるようで。
コード上のポインタ値としての0をコンパイラがどう解釈するかなんてのは、
その後の 無能な教科書コピペ投稿 で連呼されているように明らかです。
その上でコードはどう書こうかと考えたなら、

ポインタ変数に0を突っ込んだり0と比較したりするのはやめてほしいナリ

と思うわけですが、そんなに難しい話ですか?
0611↑NGNG
>>610
NULL を使わないとそんなに可読性が低下しますか?
C++ ならむしろ 0 を使うのを推奨してますが….
0612デフォルトの名無しさんNGNG
ポインタと、数って、概念でもまったく別物でしょう。
NULLというポインタ値と、0という数値が、
コード上で0という同じリテラルってのが違和感あります(=可読性低)。

付け足すなら、勉強中の人が混同してしまうのを避けるためにも、
0でなくNULLを使うことが望ましいと思うのです。
0613デフォルトの名無しさんNGNG
int * p = 0;
if( p ) free( p);
if( (p = malloc(256)) == 0 ) error( "allocation error");

0 マンセー(藁
0614デフォルトの名無しさんNGNG
NULL の定義を 0 か (void *)0 どっちがいいかな。
前者じゃあ
int a = NULL;
が成立するから、やっぱり (void *)0 が妥当ですな。
0615デフォルトの名無しさんNGNG
>>610
NULLは無くしてしまった方がいいよ。
if (p) 〜
if (p != NULL) 〜
ほら、有効ポインタ判定で8文字もタイプ量が増えてしまう。
if (!p) 〜
if (p == NULL) 〜
ほら、無効ポインタ判定で7文字もタイプ量が増えてしまう。
p = 0;
p = NULL;
ほら、無効ポインタ代入で3文字もタイプ量が増えてしまう。
0616デフォルトの名無しさんNGNG
>>614
Cではそう思いますが、C++のときは0でなきゃなりません。
(void*)0とした場合、

 char* p = (char*)NULL;

と書かないとダメになるので。
0617デフォルトの名無しさんNGNG
>>611
C++ で NULL を使わないのは話が違うでしょ。
C++ だと void* 型を代入するときにキャスト使えってのと
マクロを使わないで const 使えって話があるから
NULL を使いづらいって話でしょ?

C ならマクロ使ってもケチ付かないし、
void * をキャストなしで代入しても何も言われない。

ま、どっちでもいいけど。
0618デフォルトの名無しさんNGNG
faqじゃん。
0619デフォルトの名無しさんNGNG
>>618
だな。
0620デフォルトの名無しさんNGNG
>>618-619
百も承知でやってんじゃないの?
0621デフォルトの名無しさんNGNG
faqコピペ厨は逝ってよし
0622デフォルトの名無しさんNGNG
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html

・C FAQ 日本語訳
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/C-faq/C-faq-00.html
0623デフォルトの名無しさんNGNG
if (a < b < c)
やっちまったよ・・
0624デフォルトの名無しさんNGNG
>>623
逝ってください。
0625デフォルトの名無しさんNGNG
if (a << b << c)
さらに意味不明に ....
0626デフォルトの名無しさんNGNG
a,b,cのそれぞれの型と演算子のオーバーロードによってはあるいは…
0627デフォルトの名無しさんNGNG
>>623
>>625
何も問題ない。正常に動作するじゃん。どこがおかしいの?
0628デフォルトの名無しさんNGNG
>>627
コンパイル通る=正常に動作、ではありません。
逝ってらっしゃい。
0629パズルNGNG
「a < b < c」が常識通りの意味を持ち、
かつ、普通に比較演算子を使うこともできるように
演算子オーバーロードせよ
0630デフォルトの名無しさんNGNG
>>627
キミの頭
0631デフォルトの名無しさんNGNG
>>629
組込型に対する演算子はオーバーロードできないぞ。
その辺はどうする?
0632デフォルトの名無しさんNGNG
---------------------------------------------------------------
0633デフォルトの名無しさんNGNG
>>631
USOでしょ?
0634デフォルトの名無しさんNGNG
CやC++の'<'は左結合の2項演算子だから
((a < b) < c)
↓
(bool < c)
↓
bool
0635デフォルトの名無しさんNGNG
Cにboolは無いでしょ。
>> 627
脳のデバグーしてください。

hoge:~/tmp$ cat fuge.c
#include <stdio.h>
int main(){
int a=-3;int b=-2;int c=-1;
if(a<b<c)puts("OK");
else puts("Error");
return 0;
}
hoge:~/tmp$ cc fuge.c
hoge:~/tmp$ ./a.out
Error
hoge:~/tmp$
0636デフォルトの名無しさんNGNG
>>635
新しいCの規格ではboolが追加されていたような。
0637デフォルトの名無しさんNGNG
>>636
あそうなんだ?
#define BOOL int
でしたいつもいついつまでも。
typdefの方いるのかな?
0638637NGNG
typdef (自分でプッ
0639デフォルトの名無しさんNGNG
今、見てるCのソース、ほぼすべての関数が void 型。
プロトタイプ宣言は必要なさそうなのでしてません、の意味ってこういう事だったとは!?
0640デフォルトの名無しさんNGNG
>>636
_Bool だな。
0641デフォルトの名無しさんNGNG
>>633
アトラン、イイ!
0642デフォルトの名無しさんNGNG
  End If
  End Select
  End If
  End If
  End If
  End If
  End If
  End If
  End If
  End If
  End With
 Next i
0643デフォルトの名無しさんNGNG
goto 1;
0644デフォルトの名無しさんNGNG
switch(hoge)
case a : switch(moge)
case b : switch(nyo)
case c :…

いや、俺が書いたんだが(w。
0645デフォルトの名無しさんNGNG
「Javaの将来性」
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=986658903
の119より。

>正常系 String、レアケースで Integer や String[], Exception が
>入るコレクションなんて メンテできません。
>Object を VARIANT 型と勘違いしている VB 厨房死んで。

愕然とするしかないよ、、、、。
0646デフォルトの名無しさんNGNG
あげー
0647デフォルトの名無しさんNGNG
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>

#define SOCK_NAME "/tmp/socket"

main(){
struct sockaddr_un addr;
int fd, len;
char buf[1024];

ret = 1024;

if ((fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) {
perror("socket");
exit(1);
}

bzero((char *)&addr, sizeof(addr));

addr.sun_family = AF_UNIX;
strcpy(addr.sun_path, SOCK_NAME);

if (connect(fd, (struct sockaddr *)&addr,
sizeof(addr.sun_family) + strlen(SOCK_NAME)) < 0){
perror("connect");
exit(1);
}

while (1) {
write(fd, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 1024);
}

close(fd);
exit(0);
}
0648デフォルトの名無しさんNGNG
え?
0649デフォルトの名無しさんNGNG
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

読みにくいから

"aaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaa"
と書いてね
お願い
0650デフォルトの名無しさんNGNG
なげー
0651デフォルトの名無しさんNGNG
ttp://x68000.ririka.or.jp/cgi-bin/webcount.c
main長いね。
0652デフォルトの名無しさんNGNG
iが32bitのintで

if (i & 0x80000000)
を
if (i < 0)

どーなんだろうか。
0653デフォルトの名無しさんNGNG
>>651
あえてあげるほど長くはないよ
0654名無しさんNGNG
DIM A(1000) as Integer,i as integer
for(i=0;i<1000;i++){
A(i) = i * i;
__asm{
mov cx,0
mov ax,A[cx]
shr ax,1
mov A[cx],ax
}
}
やっぱ ABC言語やね
0655デフォルトの名無しさんNGNG
組み込み系にて
stdio.hとかは使用しない

#define UCHAR unsigned char
#define USHORT unsigned short
#define ULONG unsigned long
#define LENUCHAR 1 /* UCHARデータバイト数*/
#define LENUSHORT 2 /* USHORTデータバイト数*/
#define LENULONG 4 /* ULONGデータバイト数*/
#define NULL 0 /* NULL */
#define NULLP 0 /* NULLP*/
#define ALLF -1 /* ALL F*/
#define ZERO 0 /* ZERO*/


NULLPはポインタに使用しています。
が、p = (void*)NULLPなんてのも...。
警告されるからなんでしょうけどねぇ。
0656デフォルトの名無しさんNGNG
>>655
キミのソースは削除に値します
つまり、クソってことさぁ!
0657デフォルトの名無しさんNGNG
>>655
少なくとも 型は typedef にしろよ……
0658デフォルトの名無しさんNGNG
Private Sub tmrMove_Timer() '100msごとにタイマ処理

shpButtai.Left = shpButtai.Left + 50 '左から右に50ずつ移動
shpButtai.Top = shpButtai.Top + 50 '上から下に50ずつ移動

End Sub
Private MouseX 'カーソルのX座標
Private MouseY 'カーソルのY座標

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

MouseX = X 'カーソルを動かすたびにカーソル位置を憶える
MouseY = Y

End Sub

Private Sub tmrMove_Timer()

'虫の移動量を計算
Dim MoveX 'X方向の移動量
Dim MoveY 'Y方向の移動量
Static ButtaiX '物体情報X
Static ButtaiY '物体情報Y

If MouseX > ButtaiX Then MoveX = 1 'X方向の移動量を出す
If MouseX < ButtaiX Then MoveX = -1

If MouseY > ButtaiY Then MoveY = 1 'Y方向の移動量を出す
If MouseY < ButtaiY Then MoveY = -1

ButtaiX = ButtaiX + MoveX * 10 '物体の位置+移動量*移動速度10倍
ButtaiY = ButtaiY + MoveY * 10

shpButtai.Left = ButtaiX 'Shape1の移動
shpButtai.Top = ButtaiY

End Sub

Private MouseX 'カーソルのX座標
Private MouseY 'カーソルのY座標

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

MouseX = X 'カーソルを動かすたびにカーソル位置を憶える
MouseY = Y

End Sub
0659デフォルトの名無しさんNGNG
>>657
構造体だけ集まっているヘッダはこうなってたヨ

typedef unsigned char uchar;
typedef unsigned short int ushort;
typedef unsigned int uint;
typedef unsigned long ulong;

typedef struct common_t{
uint field;
uint bufID;
void *dataaddress;
void *nextaddress;
}common, *pcommon;

それからこんなの使ったこともないらしい。
#ifdef XXXX_H
#define XXXX_H
#endif

さらにほとんど1ファイル1関数みたい。
0660デフォルトの名無しさんNGNG
とりあえず
俺の周りには
PCやらオーディオなんかの
コードがウザくってしょうがない
0661デフォルトの名無しさんNGNG
>>660
はいはい。わかったからsageてね。
0662デフォルトの名無しさんNGNG
>>660
ひきちぎっとけ。
0663デフォルトの名無しさん NGNG
Cでmainを最後に書いてあるコードを見たことがある。
なんでこんなことを?って思ったけど、こう書くと
関数定義が不要になるんだね。
けど、ソース追いかけるの大変だった。
0664sageNGNG
>>663
それは常識だろ?
でもK&Rとの互換性必要ないならプロトタイプ宣言書くほうが良い。
あと、書籍の簡単なサンプルなんかもmain最後で書いてたりする。
0665チビ女NGNG
>>663
読みにくいのは慣れの問題なんじゃないの?
PASCALなんかだと、呼び出し側のルーチンを下に書く文法だけど、
読みやすいって言ってる人は多い。
0666デフォルトの名無しさんNGNG
>>663
モジュールの長さによるよな。
3000行くらいあるとたどり着くまでに見る気がなくなる
0667デフォルトの名無しさんNGNG
line = no1;
// ↑FlushへのWrite関数に10進パラメータを入れると内部
// で16進にして書き込むので、問題ない。

驚愕のコメント。一気に修正する気なし。
身元、バレるかな・・・?
0668デフォルトの名無しさんNGNG
>>663 Cなら1モジュール1関数にしとけ
0669デフォルトの名無しさんNGNG
>>668
糞の典型
0670判定をお願いしますNGNG
Cです。
コーディング規約でgotoが使えません。

execute = true;

if( execute == true ){
ret = f1();
if( ret == 不正 ){
execute = false;
}
}

if( execute == true ){
ret = f2();
if( ret == 不正 ){
execute = false;
}
}

if( execute == true ){
ret = f3();
if( ret == 不正 ){
execute = false;
}
}
:
:
:
if( execute == false ){
不正なことに対する終了処理
}

return;
0671デフォルトの名無しさんNGNG
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
Del厨断末鬼の叫び!!!
拙い言いがかりからRubyを必死に煽ろうとしたDel厨が逆襲を受けて死亡!
理論的にDelphiはRubyの足元にも及ばないことが証明された!!!
「Ruby撲滅スレ」
http://piza2.2ch.net/test/read.cgi/tech/1001125342/
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
0672デフォルトの名無しさんNGNG
>>670
規約とはよりよいコーディングのためと思われ
でも規約が絶対視されることはよくある

スレ違いsage
0673デフォルトの名無しさんNGNG
>>670 全体を関数にして処理を終了したいところで return するてのはどうだい?
goto よりも見通しがいいと思うよ。
しかし、大きなお世話だな>goto禁止
0674デフォルトの名無しさんNGNG
>>670
こんな感じ?

ret = f1() !=不正 && f2() != 不正 && f3() == 不正;

if (!ret) {
不正な場合の処理
}

いやなコードだ。
0675デフォルトの名無しさんNGNG
身元がばれそうだが…

コーディング規約

・移植性を高めるためintではなくint32_tを使う
・'\0'や'0x00'はNULLで統一する。
・関数名と左括弧はスペースをあけない。
・returnはreturn (), exitはexit ()と記述する。

main(){
int32_t a;
int32_t b;
u_int32_t c;
char d[31+1];

memset(d, NULL, sizeof(d))
:
if( a < b){
exit (a);
}
exit (b);
}
0676デフォルトの名無しさんNGNG
>>670

{
 if( f1()==不正 );error_syori();return}
 if( f2()==不正 );error_syori();return}
 if( f3()==不正 );error_syori();return}
}

error_syori()
{
 不正なことに対する終了処理
}
とか
{
 do{
   if( f1()==不正);break}
   if( f2()==不正);break}
   if( f3()==不正);break}
  return;
 }while( 0 );
不正なことに対する終了処理
}
じゃ駄目?gotoは見にくいから使わないよ。
0677デフォルトの名無しさんNGNG
break} > break;ね
0678デフォルトの名無しさんNGNG
>>676
なかなかイカシているね!でもネタだからボツ
そういうのを真面目に書いたのを見たい。
アフォPGのソースを拝借してきて。
0679デフォルトの名無しさんNGNG
>>678
どこがおかしいんだろ??
仕事でこういうコード書いてますが?
0680はいはいNGNG
{
 if( f1()==不正 ){error_syori();return;}
 if( f2()==不正 ){error_syori();return;}
 if( f3()==不正 ){error_syori();return;}
}

error_syori()
{
 不正なことに対する終了処理
}
0681デフォルトの名無しさんNGNG
{
 do{
   if( f1()==不正) break;
   if( f2()==不正) break;
   if( f3()==不正) break;
  return;
 }while( 0 );
不正なことに対する終了処理
}
0682デフォルトの名無しさんNGNG
>>675
C++ なら確かに NULL でも問題ないのですが、
別に NIL だとか作って使った方がいいのでは、
と思うんですけどねぇ...。
675 さんの問題ではないので、
ここで言ってもどうにもならないのでしょうが。
0683デフォルトの名無しさんNGNG
if(f1() == 正しい &&
f2() == 正しい &&
f3() == 正しい) return;

不正なことに対する終了処理
0684デフォルトの名無しさんNGNG
>>675
>・移植性を高めるためintではなくint32_tを使う
移植性が必要なところ以外でも使うの?
0685デフォルトの名無しさんNGNG
Private m_nDrawFlag As Boolean '描画スイッチ
Private m_nInitX As Integer '描画開始位置(X座標)
Private m_nInitY As Integer '描画開始位置(Y座標)

Private Sub pctAnime_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

'左ボタンを押されたら描画開始
If Button = vbLeftButton Then
m_nDrawFlag = True '描画スイッチオン
m_nInitX = X '描画開始位置を憶える
m_nInitY = Y
pctAnime.PSet (m_nInitX, m_nInitY), RGB(0, 0, 0) '最初の点を打つ

'右ボタンを押されたらクリア
ElseIf Button = vbRightButton Then
m_nDrawFlag = False '描画スイッチオフ
'白で塗りつぶす
pctAnime.BackColor = &HFFFFFF ‘pctAnime.Cls としても良い
End If

End Sub

Private Sub pctAnime_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

'描画中なら線を描く
If m_nDrawFlag = True Then
pctAnime.Line (m_nInitX, m_nInitY)-(X, Y), RGB(0, 0, 0) '線を描く
m_nInitX = X '次の開始位置を保存
m_nInitY = Y
End If

End Sub

Private Sub pctAnime_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

'描画中なら最後の線を描く
If m_nDrawFlag = True Then
pctAnime.Line (m_nInitX, m_nInitY)-(X, Y), RGB(0, 0, 0) '線を描く
m_nDrawFlag = False '描画スイッチオフ
End If

End Sub
0686デフォルトの名無しさんNGNG
>>683
a==不正 と !(a==正しい) とは同値ではない
0687683NGNG
>>686
スケマティックな表記にそんなケチをつけんでも。
0688デフォルトの名無しさんNGNG
double e(){
 int i,n=1;
 double e=0;
 for(i=1;i<13;i++){
  n*=i;
  e+=1/n;
 }
 return e;
}

氏んでくれ。
0689デフォルトの名無しさんNGNG
>>675
> ・関数名と左括弧はスペースをあけない。
> ・returnはreturn (), exitはexit ()と記述する。
矛盾してる。
0690デフォルトの名無しさんNGNG
>>689
それ関数じゃねえし。
0691デフォルトの名無しさんNGNG
>>690
exit()は関数
0692デフォルトの名無しさんNGNG
#define S10_09 136
#define S10_09_01 137
#define S10_09_02 138
#define S10_09_03 139
#define S10_09_04 140
#define S10_09_05 141
#define S10_09_06 142
#define S10_09_07 143
#define S10_09_08 144
#define S10_09_09 145
#define S10_09_10 146
#define S10_09_11 147
#define S10_09_11_01 148
#define S10_09_11_02 149
#define S10_10 150
#define S10_10_01 151
#define S10_10_02 152
#define S10_10_03 153
#define S10_10_04 154

こんなのがあって、S10_10_03_01 になりそうなものを追加したいんですけど、
私はどうすればいいのでしょう?
0693デフォルトの名無しさんNGNG
153.1
0694デフォルトの名無しさん NGNG
>>659
すまん、ふるいのを掘り起こす.
#ifdef でなくて、#ifndef だろ。
0695デフォルトの名無しさんNGNG
>>692
enumで書き直せ
0696デフォルトの名無しさんNGNG
>>675
・'\0'や'0x00'はNULLで統一する。
ネ,ネタ? C++ではこれでもいいんだっけ?

・移植性を高めるためintではなくint32_tを使う
I/Oポートを叩く時とか,32ビットであることが必要な個所には
必要だろうが,関数の返り値で0か1か判ればいい個所ならintで
いいんじゃない?
0697692NGNG
>>695
1からずっと続いてそこまできてるんよ?
0698デフォルトの名無しさんNGNG
>>697
enum使え
0699デフォルトの名無しさんNGNG
AfxThrowMemoryException();
// ↑バカのひとつおぼえ
0700デフォルトの名無しさんNGNG
ななひゃくう〜!
0701デフォルトの名無しさんNGNG
>>698
enum萌え
0702デフォルトの名無しさんNGNG
define萎え
0703デフォルトの名無しさんNGNG
>>697 (692)
プログラマなら
s/#define *([^ ]*) *[0-9]+ *$/\t\1,/;
くらいのことすれ。
0704デフォルトの名無しさんNGNG
>>703 禿同。
しかし「エディタに置換コマンドくらいないのか?」と言っとかないと
通じない恐れあり。
0705デフォルトの名無しさんNGNG
グローバル変数で、
int a;
int b;
int c;
途中略
int x;
int y;
int z;
というのを見た事がある。
しかも、半分以上は未使用。
0706デフォルトの名無しさんNGNG
>>705
名機PB-100で、育った人なのかも。
0707デフォルトの名無しさんNGNG
/* 日時 */
strcat(strcat(strcat(strcat(strcat(yyyy,mm),dd),hh),mi),ss);

えーと、sprintfを使ってください。
0708デフォルトの名無しさんNGNG
char dat[255]; <-- グローバル

data_conv( 3 );

//---------------
void data_conv( int a )
{
char str[255];
strcpy( str, &dat[3] );
if( str[0] != 0x20 ) return;
}

激しく謎だった。
0709デフォルトの名無しさんNGNG
>>708
aは何処いったの?
0710 NGNG
int *a;

*a = 0;

printf("%d",*a);

うちの大学の授業のサンプル。
追求したら講師二人が

「こんなことしてはいけない。」
『環境によっては大丈夫だ。』

ともめていた。

使ってるのはgccなんだけどなぁ・・・。
0711デフォルトの名無しさんNGNG
>>708
wait?
きっと、すごいシビアなマルチスレッドなプログラミングで‥‥
プログラマがマターリするために書いたんだろうね
0712デフォルトの名無しさんNGNG
han age
0713デフォルトの名無しさんNGNG
>>710
すいません、そのコードの何が悪いのでしょうか。

int *a;
*a = 0;
printf("%d",*a);

なんの問題もないように感じますけど。
0714デフォルトの名無しさんNGNG
>>713 実行してみればわかるよ
0715デフォルトの名無しさんNGNG
*a= 0;の行でa がどこ指してるのか不定なのに代入してるからCore吐いて死ぬよ。

実行結果
[12:~]$uname -a
CYGWIN_ME-4.90 *** 1.3.4(0.47/3/2) 2001-11-07 13:36 i586 unknown
[13:~]$./bad.exe
Segmentation fault (core dumped)
[14:~]$
0716715NGNG
あ、上のは >>713 ね。
0717デフォルトの名無しさんNGNG
MSDOSなら
0718デフォルトの名無しさんNGNG
職場のバカリーダーに >>710 見せたら
713と同じく「何もおかしくないだろ」と言ってた・・
0719デフォルトの名無しさんNGNG
>>30ってなんでダメなの?
0720怒っている初心者NGNG
>>719
for( int i = 0; i < 10; i++)

ならいいのかよっ!!教えろよ!!なんでだよ!!
0721デフォルトの名無しさんNGNG
>>720
メモ帳
0722デフォルトの名無しさんNGNG
>>720
#include <stdio.h>
int main(void){
   for( int i = 0; i < 10; i++)
     printf("%d",i);
}
これでなんの問題も無くコンパイルされ実行したら0123456789を出力されて終わったが。
なにが問題あるのだろうか?
0723デフォルトの名無しさんNGNG
>>721
ハ?メモ帳とは?
0724デフォルトの名無しさんNGNG
素直にi++って書け、ってことでは
0725デフォルトの名無しさんNGNG
それだけで糞扱いなのか
0726デフォルトの名無しさんNGNG
process1(int type){
if(type==TYPE1_A || TYPE1_B){
process2(TYPE2_A)
}else if(type==TYPE1_C){
process2(TYPE2_B)
}
と10個くらい続く
process2(int type){
if(type==0){
....
}else if(type==1){
....
}
と5個くらい続く

全くバカは困る
バイトだから,指摘できないんだよね
これ見てたら、気づいてくれ
まずはてめーでドキュメント作りやがれ
よくよく見れば,おまえたいしてコーディングしてないわりには
わかりにくい巨大クラスつくってるんじゃねーよ
virtual一個も無いのに、protectedなんてつくるなよ
そもそも,継承なんてできねーんだってそんなクラスは

っていうか、要素数0からreallocして、
だいたい要素数500まで行くんだけど、
もしかして、newの使い方がわからんのか?

最後に聞きたい
メモリ開放するためのマクロのメリットは何?
ちなみに、reallocした部分にif(p)はないでしょ?
(俺の勘違いか?reallocなんて使った事ないからな・・・)

とりあえず,些細な仕様変更で
膨大な量の書き換えが必要なもん作らないでくれ
だから,君の担当部分でバグ習性不可能になって、
俺が肩身の狭い思いをするんだよ
俺に言ってくれれば,さっさと直してやるって
それにしても大学で何を勉強してるのか疑問だ

最後に
これを見て心当たりがあったら、とりあえず誤れ
かなりむかついてるんだよ
最後に恥をかくのは君だからね
0727デフォルトの名無しさんNGNG
あー,これじゃあ気づかないだろーな・・・
よくありがちなパターンだもんな

これに当てはまる人っていっぱいいそうだから、
はやめに誤った方がいいっすよ

クソコードの恨みは結構大きい
0728デフォルトの名無しさんNGNG
>726
>とりあえず誤れ
既に誤ってるだろう。要求すべきは謝ることだ。
0729デフォルトの名無しさんNGNG
なるほど、サンク
0730デフォルトの名無しさんNGNG
おい、沈むな、沈むな。
0731デフォルトの名無しさんNGNG
コードもだけど、コメントがなあ。
通信系だが「CCH」 日本語で書くと制御チャネルなのだが、
今やっているソースの引き継ぐ前の人はこのCCHを

制御CCH
制御CHチャンネル
Cチャネル
制御チャンネル
CCチャネル

など、処理ごとに表現が変わるから理解するの大変なんだよなあ
しかも全角半角使い分ける?し、制御が生魚になってて爆笑させてくれるし
0732デフォルトの名無しさんNGNG
上司が、自分の過去に書いたソースがあるのでそれを参考にして始めろ。
というので見てみたら、いきなり

#define UINT unsigned int
#define ULONG unsigned long

とか書いてんの・・・。
0733デフォルトの名無しさんNGNG
define death蚊・・・
0734デフォルトの名無しさんNGNG
>>732 typedef を使えということかい?
でも、そのケースで define だと実害があるケースを思いつかなかった
0735 NGNG
>>732
いけないの?
0736デフォルトの名無しさんNGNG
ざっと読み返したけど、このスレ、只の八つ当たりが混じってる気がする。
何が悪いのか説明してないのは書き捨てのつもりか?>>732
0737デフォルトの名無しさんNGNG
>>726モナー
0738デフォルトの名無しさんNGNG
>>726
バイトに長々と影で文句を言ってる奴の方が人間的に問題あると思うが

指導してやれよ
0739726NGNG
あ、俺がバイトね
一応、上司って事になると思うから、
あまり大きい事はいえないんだよね
特に,「あんたのコード糞」なんてね(w

今後の予定とかも全然言ってくれないし、
いつまでに仕上げろとも言わないし、
どういうプログラムを作るのかも,曖昧にしか説明できないし、
(アウトプットのインターフェースのみ)
プログラム作るための資料も、全然足りてないし・・・
いったいそれだけの情報で、俺はどう振舞えばいいの
途中で相談の機会も作ってくれないし、
そんなクリティカルな部分をコーディングさせないでって思う。

とりあえず,再利用できるコードがひとつも無いし
まあ本人的には,再利用できると思ってるっぽいけど
クラスのメンバとかが絡んでくる関数なんて,再利用できません。
デザパタの本も持ってるだけじゃなくて、使って欲しいな・・・
ポインタがよくわかって無さそうだから無理っぽいけど(w

allocの開放については、よく知らないけど
allocを使うメリットってなんだろ
4Gの仮想空間だから確率的には低いけど、
長時間動かすプログラムだからやっぱり危険だと思うんだよね
そこでメモリ確保できなかったら、プログラム止まっちゃうし
まあ,俺は体感できなくても高速なプログラムを書く方が好きだし
allocなんて使う事はないだろーなー
まあ、allocっていうかvector作る事はよくあるけど
0740デフォルトの名無しさんNGNG
>>739は 相変わらず謎だ。
説明能力を見る限り739が間違っている可能性がある。
0741デフォルトの名無しさんNGNG
>>726
>これを見て心当たりがあったら、とりあえず誤れ

誤りワロた
0742デフォルトの名無しさんNGNG
>>739
>そこでメモリ確保できなかったら、プログラム止まっちゃうし

ちゃんと確保できたかの判断ぐらい入れろよ・・・ポインタ以前の問題だぞ、おまえ
0743デフォルトの名無しさんNGNG
エラー処理を全く行わないプログラムスタイル(ビジネススタイルか?)
もあるよ。
0744_NGNG
>>743
止まるっしょ。それ。
0745デフォルトの名無しさんNGNG
>>742
マルチスレッドじゃないので、どうしようもなくなります

>>740
確率的には低いですね
向こうはvirtualが使えません
オブジェクト指向ができません
アルゴリズムを知りません
データ構造を知りません
0746デフォルトの名無しさんNGNG
>>740よ。
「・・・謎だ」とか「・・・可能性がある」なんて言う婉曲な
言い回しをするのは、本人のためにも良くないと思われ。
率直に「お前がヴァカなんだよ(藁」といってやれ。

>>745
いいえ、確率的には高いですね
貴方は例外が使えません
自分の主張を他人に論理だてて説明する事ができません
動的なメモリ確保の利点を知りません
自分の書いた文章を見直すという事を知りません
0747デフォルトの名無しさんNGNG
上司も上司なら、バイトもバイト、って感じだな。
0748745NGNG
>>動的なメモリ確保の利点を知りません
はて、new(malloc)とreallocの比較なんですけど?
スタック領域を増やして,ヒープを使わないなんておろかな事は
しませんが・・・・

>貴方は例外が使えません
ヒープにメモリが確保できないというのは、
例外以前の問題ですが,理解できますか?
ちなみに私の書いたコードに関して言えば、
try/catchはありますが。
ベースの部分にtry/catchが無いのでどうしようもないです。
まあ,そんな事は設計フェーズで決める事だと思うし
そのへんのポリシーを説明してもらえなきゃ,何もできない

>自分の主張を他人に論理だてて説明する事ができません
まあ,コンピューターに対しては、
自分の考えを論理的に説明しなきゃならんけど
普通、人に対してはそんな事できないよな・・・
って俺の文章を批判してるのやら、
上司に自分の主張をしろって言ってるのやら
ようわからん奴だな

>自分の書いた文章を見直すという事を知りません
はぁ?


他人の文章を読んで理解できなかった場合、
2つのケースが考えられます。
1つ目は、書き手がバカな場合
2つ目は、読み手がバカな場合
もう一度検討なさってみてはどうでしょうか?

で、上記の4点から
>確率的には高いですね
といってるわけ?
すごい論理的だね(w
君もすごいコード書きそうだね
0749デフォルトの名無しさんNGNG
746じゃないが、あの文章から

>はて、new(malloc)とreallocの比較なんですけど?
>スタック領域を増やして,ヒープを使わないなんておろかな事は
>しませんが・・・・

を読み取れというのは、傲慢だと思うぞ。
0750デフォルトの名無しさんNGNG
>>736はtypedefの代わりにdefineを使った時の実害を勉強しておく事。
0751デフォルトの名無しさんNGNG
>>すごい論理的だね(w
>>君もすごいコード書きそうだね

君はすごい仕様書書きそうだ.
0752デフォルトの名無しさんNGNG
>>748
>で、上記の4点から
>>確率的には高いですね
>といってるわけ?
>すごい論理的だね(w

推論の進め方(及び文の構造)自体は>>745から借用したんだが、何か?

ついでにいうと、自分の書いた文章を見直す癖をつけておけば、
謝った書き方をする事も無くなると思うが・・・
0753仕様書無しさんNGNG
>他人の文章を読んで理解できなかった場合、
>2つのケースが考えられます。
>1つ目は、書き手がバカな場合
>2つ目は、読み手がバカな場合

1つ目に1票入れておきます。
0754経歴書無しさんNGNG
public boolean DBに接続するぞ() throws 接続できないぞ例外
{
}
0755デフォルトの名無しさんNGNG
allocの説明だけ判ったけど、最初のコードの説明その他が無いじゃん。
説明求められて他の例を列挙しちゃうし・・・・。
0756デフォルトの名無しさんNGNG
>>755
ポリモーフィズム知らんの?
うちの会社には、C++つかっててポリもーフィズム使えないようなアホはいない
やっぱり恵まれてる方なのかも

>ついでにいうと、自分の書いた文章を見直す癖をつけておけば、
>謝った書き方をする事も無くなると思うが・・・
「オマエモナー」というツッコミの余地を残してるのは
やっぱり意図的なのかな?
728の文章読んだとき、笑ってキーボードが水没しかけたよ
もしかして,プロか?
文章の書き方にセンスを感じる
まあ,コーディングに関しては慎重にやっても
エラーがでるよな
VCのエラーメッセジはちょっと痛い

>推論の進め方
全然違う気が・・・
バイト君は、裏づけをしてる一方で
752はそれを否定して、かつ自分の意見を通したいわけでしょ?
そもそも、そこは論理的に書いてるんじゃないっしょ?
プレゼンとかあまりしない系の職業なのかな
0757デフォルトの名無しさんNGNG
また妙なのがでてきたぞ。
なぜそこでポリモフィズムかね。
0758デフォルトの名無しさんNGNG
デムパ君だったか・・・。
0759デフォルトの名無しさんNGNG
まあ、745はバイトふぜいで偉そうにするなって感じだね。
0760デフォルトの名無しさんNGNG
できるバイトであっても所詮バイトはバイトでしかないんだよね。
0761デフォルトの名無しさんNGNG
まとめ:

             マ 板 で や れ
0762デフォルトの名無しさんNGNG
反論:

              マ 板 に 押 し 付 け る な
0763デフォルトの名無しさんNGNG
提案:

               じ ゃ あ モ 。 板 で や れ
0764デフォルトの名無しさんNGNG
見物:

               シャア版が正解。
0765デフォルトの名無しさんNGNG
定説:

             Rubyサイコー

 
0766デフォルトの名無しさんNGNG
なんでこういう状態で上がってるの?
0767デフォルトの名無しさんNGNG
>>766
バカが多いからだろ
明らかに一人でやってるよな・・・・
よっぽど退屈だったのでは?
0768デフォルトの名無しさんNGNG
すくなくとも二人いる。俺はシャアだけ。
0769デフォルトの名無しさんNGNG
>バカが多いからだろ
>明らかに一人でやってるよな・・・

すげーーや。
多数でかつ一人とは・・・。
0770デフォルトの名無しさんNGNG
「ちょっと一服」

>>726以降、この一連のスレの流れの中で
非常に個性的な意見をお持ちの方が一人いらっしゃいます。
しかも困った事に、その人には自作自演の傾向があるようです。
さぁ、皆でどれが御当人のレスか推理してみましょう!

その人の特徴
1.文末に"。"を打たない傾向が強い。
2."、"と","を混在して使用する。
0771デフォルトの名無しさんNGNG
Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞R
ubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Ru
byは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rub
yは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Ruby
は糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは
糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞
Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞R
ubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Ru
byは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rub
yは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Ruby
は糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは
糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞
Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞R
ubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Ru
byは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rub
yは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Ruby
は糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは
糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞
Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞R
ubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Ru
byは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rub
yは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Ruby
は糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは
糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞
Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞R
ubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Ru
byは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rub
yは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Ruby
は糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは
糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞Rubyは糞
0772デフォルトの名無しさんNGNG
つまらんテクスチャーだな。
0773デフォルトの名無しさんNGNG
>>771
Rubyでこういうプログラム作って、
「俺もプログラマーだぜ!」とか思ってるんでしょうね。
イタイというより哀しくなってきた・・・
0774デフォルトの名無しさんNGNG
>>773
「Rubyは糞」をルビ房が書くかねえ?
0775デフォルトの名無しさんNGNG
Ruby叩いている奴ウザすぎだな。
0776デフォルトの名無しさんNGNG
goto 12;5:goto 8;2:goto 3;6:goto 7:9:goto 10;
3:goto 9;4:printf("ゴール\\n");goto 6;12:goto 6;
7:goto 13;13:goto 9;10:goto 5;7:goto 4;8:;
0777デフォルトの名無しさんNGNG
typedef int SEISUU;
typedef short MIZIKAISEISUU;
typedef long NAGAISEISUU;
typedef char MOZISEISUU;
typedef float HUDOUSYOUSUUTEN;
typedef double NAGAIHUDOUSYOUSUUTEN;
...(以下略)

正直、悲しかった。
0778デフォルトの名無しさんNGNG
FUDOUじゃないのか?
0779デフォルトの名無しさんNGNG
>>778
よく見ろ。全部訓令式だ。
0780デフォルトの名無しさんNGNG
ローマ字使うのはまだいいが訓令式にするか標準式にするかくらい
統一してくれ…
つーか漏れの仕事先で統一されてるところ見たことないんですけど。
0781デフォルトの名無しさんNGNG
>>777
それ書いたやつはプログラム書くなという感じだな。
そっこークビでいいし。
■ このスレッドは過去ログ倉庫に格納されています