自分がよくやるバグ

このエントリーをはてなブックマークに追加
>>334
あすまん、reutrn はタイプミス。
正解は引数の anonymous の書き間違いで this.A = A; みたいな結果になったこと
342デフォルトの名無しさん:02/09/14 18:32
>>340
オレはビット演算は常に括弧で囲む
commitし忘れ
reutrn 笑った。右手と左手とでタイプのタイミングが合わないとそうなる。
あるある
普通ははっきりと誤字るとそれとわかると思うけど
この場合自分じゃミスした気がしないのに文字がswapされてるんだよな
346デフォルトの名無しさん:02/09/14 22:51
#define BUFSZ 100

char buf[BUFSZ];
char *c;

c = buf;
memset( buf, 0x00,200);

の様な感じ。
347デフォルトの名無しさん:02/09/15 00:57
>>346
ちょっと良くわからんのだけど,このバグはcのせいなの?
348デフォルトの名無しさん:02/09/15 01:05
>>347
頭が悪い成果と

char *cつかってねーし。
bufが固定なんだから普通はsizeof使うだろ。
349デフォルトの名無しさん:02/09/15 01:15
>>348
うん。>>346がどういう意図で書いたのかが良く分からん。

#define BUFSZ 100
char buf[BUFSZ];
memset( buf, 0x00,200);

でいいじゃんね。
これならわかる
char buf[100];
char *c = buf;
memset(c, 0x00, sizeof(c));
初心者のころ、#define BUFSIZ ... とか書いて文句言われたときは正直困った
似たようなことだけど、自作クラスの名前と API の名前とぶつかることが。
WinAPI の PropSheet() も、名詞にしないでせめて CreatePropSheet()
くらいにしてほしかった。class PropSheet が通らなくてしばらく悩んだ。
PropSheet() じゃなくて PropertySheet() だ。
そこでクラスの名前を PropSheet にしたのだった。
C++なら、ネームスペースでもインチキクラスでも逃げれるけど、
Cだときついね。かなり。
そんで、「グローバルな識別子にはプリフィックスを付ける」なんて...。
355デフォルトの名無しさん:02/09/15 14:18
breakはif文を抜けるのにも使えると思ってしまう
356デフォルトの名無しさん:02/09/15 14:22
#include <studio.h>
>>355
それ出来たら、大変だよね
for(i=0,〜; i<N,〜; i++,〜)
 の部分でエラーが出て、
#define N 〜
 の方にバグがあることにしばらく気付かない。
359デフォルトの名無しさん:02/09/15 17:24
>>354
ネームスペース使ってもマクロからは逃げられない。
namespace ore {
class MyClass{
  CreateWindow()
}
}
エラー
CreateWindowA()に不正な〜つの引数がうんたらかんたら…。死ね!>MS
360デフォルトの名無しさん:02/09/15 17:27
あと,Winで
class Window
作って,Xに移植したらエラー。何事かと思ったら
typedef Window int; 氏ね!
>>360
そういう時にnamespaceを使えばいいんでは
>>361
あれ?そうだよな…。
いや,何か違うんだ。
原因は何だったか忘れたがWindowという識別子が
namespace使ってもぶつかってたんだよ。
#defineだったかな…?うろおぼえスマソ
363デフォルトの名無しさん:02/09/16 00:29
スクリプト言語で、変数名タイプミス。
コンパイルしない言語は俺には向いてないみたいだ。
>>363
スクリプト言語だってエラー吐くじゃん。

型宣言なしの言語のことだよね?
template<class T> T ToRadian(T deg)
{
 return deg*T(M_PI/180.0);
}

float rad = ToRadian(30);

むかしこれハマッタ
数値でかつ非整数のみ認めるとか

template<class T> T ToRadian(T deg)
{
BOOST_STATIC_ASSERT(std::numeric_limits<T>::is_specialized && !std::numeric_limits<T>::is_integer);
return deg * T(M_PI/180.0);
}

printf("整数型変数Aの内容は\dです",a);

printfならいいけどsprintfとかでやっちゃって
かなり意味不明な挙動になった
>>367
ワラタ
369デフォルトの名無しさん:02/09/17 11:48
大幅に実装書き換えた時、コンパイルで1個も警告・エラーが出ないと
逆に不安になる漏れは余程ダメPGなんでしょうか?
>>369
わかる
>>369わかるのが悲しい・・・
テストでバグがでなくても不安
やっぱ悲しい
あるねそれ。でやっぱり不安的中で実行時エラーなんか
起きちゃったりして
秀丸で「[^=+-*/<>|&~!]=[^=]」を強調表示するようにしてから

if ( a = b ) /*本当はa==bを判定したい*/

というミスが無くなった
秀丸イヤン。
俺TeraPad派。
375374:02/09/17 17:37
あ,プログラムするのはMeadow(かEmacs)だよ。
TeraPadはビューワ
とりあえずエディタ論争防止sage
該当スレでやってね
377374:02/09/17 18:31
>>376
あ,ごめんね。不適切でした(反省)
勝手ながら終了ということでよろしく>all
某スレで質問したんだが、

String s = "XMLの内容";
DOMParser parser = new DOMParser();
InputSource source = new InputSource(new StringReader(s));
parser.parse(s); // 正解はsource。オーバーライドでファイル名とみなされてしまう。

sなんていう変数名じゃなくてxmlStringとかしておけばミスはしなかったのに。
あと、今回に限ってはハンガリアン記法バリバリのプログラミングが懐かしかった。
// 正解はsource。オーバーライドでファイル名とみなされてしまう。

このインターフェースは最低だな
>>379
そうは思わないが
>>379
そう思うよ
382デフォルトの名無しさん:02/09/24 16:51
// 正解はsource。オーバーライドでファイル名とみなされてしまう。
オーバーロードじゃなくてか?
"xmlString"っつー変数名もどうかと思うが。
384デフォルトの名無しさん:02/09/24 17:10
バクはダメですよ♪
385デフォルトの名無しさん:02/09/24 17:13
よくハグハグしますよ。
386デフォルトの名無しさん:02/09/24 17:18
はぐはぐちゃんってなに?
>>382 ごめん、オーバーロード。
>>383 そういう時はどんな名前にする?
>>378-382
大本の IBM XML Parser 作った AlphaWorks の何とかさんが (あの頃ソース読んだ限り)
Java の勉強中だったようだしね。
あー、xml4jね。去年まで使ってたけど、全然知らなかった。(汗
>>389
結構バグあったしね。引数なしの SAXException で printStackTrace() しようと
すると NullPointerException 上がったり (それを標準のパーサーが上げて
くるからかなわん)。ソース追ったけど完全な単純バグ。

SAXException ex = new SAXExcetion();
ex.printStackTrace();   // NullPointerException が出る

ちなみに最初に作ったのは IBM の田村とかいう名前だった (下の名前忘れた)。