月曜の深夜に何やってんだって感じですが、
CS+のお話。
main.c に加えて、test.c があるとき
test.c内で宣言されている関数をmain.c内でプロトタイプ宣言無しに呼ぶとどうなるか。
呼べます。エラー出ません。
今までこの仕組をあまり気にしてませんでしたが、
どうも、CS+では(RXのコンパイラでは?)、
「プロトタイプ宣言のない関数は関数型、引数ともにint型とみなす」
みたいなことが起きているようです。
つまり、多分ですが、float型なんかを使った関数は大抵おかしくなるんじゃないかと。
charとかshortとかビット長せまいものはどうなるんでしょう、ちょっとそこまで考えてません。
結論から言うと、プロトタイプ宣言しろよバカって話なんですが、いや、だって、
無くても通ったし、忘れたらあれだし、とかあると思うので設定探してみました。
CC-RXのビルドツールのプロパティで、コンパイラオプションのタブを開きます。
「インフォメーション、ウォ-ニングメッセージをエラーレベルに変更する」
を
「はい(エラー番号指定)」
にして、
「インフォメーション、ウォーニングレベルのエラー番号」
を
「23077」
にします。
下図参照。
こうすると、一番下に出ているようにプロトタイプ宣言がないとエラー出ます。
バッチリですね。多分。
これで、関数呼ぶと意図した動作をしない、とか、mainに書くと動くのに関数化すると動かない、
とか、そういうバグというかミスを減らすことができますね。
たぶんわたし、過去、なんどかこれにハマって、
「ハマり続けた結果、関数化を諦める」
ということをやっている気がします。 くそう。