症状:
コメント行を消すとプログラムが正常に動作しなくなる
環境:
言語はC
IDEは存在せずエディタを使用
組み込み用マイコンのコンパイラを用いてコマンドラインからビル
原因:
コメントに2バイト文字(日本語)を使用したため、
・エディタ上はこういう記述
//**********↓このコメントを消すと何故か動かなくなる!絶対消すな!↓*********
//※※ほげほげ関数※※
ret = hogefunc(hoge1, hoge2);
・コンパイラの理解
//**********↓このコメントを消すと何故か動かなくなる!絶対消すな!↓*********
//※※ほげほげ関数※ 蝦ret = hogefunc(hoge1, hoge2);
(※も蝦も実際には別の文字だが失念)
蝦は※の2バイト目と改行記号\
・※の1バイト目が単体で有意な1バイト文字として解釈された
・※の2バイト目+改行文字(\n)
コメント行の次の行で呼んでいるhogefunc()
コメント行に巻き込まれたことによってhogefunc()
(実際は設計上の動作ではない/たまたまhogefunc()
備考:
コンパイラのバグと設計のバグが重なって原因をわかりにくくした
デバッガが使えない環境だったので泥沼になった
0 件のコメント:
コメントを投稿