ver.2021.5.19 © いずみ♡ 無断複製転載を禁ず (リンクは可)


Warning を読め!


コンパイラのメッセージはきちんと読むこと!英語だから読めませんとか、warning は error じゃないとか、つべこべ言わずに読め!

例えば、ありがちなトラブル

マイコンでLED点滅するつもりで この↓プログラムを書いてコンパイルも通ったんだけど、 LEDが点滅しない。 初心者にはありがちなトラブルだけど、どこが間違っているかわかる?

エラーはない!俺は正しい!

動かない?なぜ?コンパイルは通っている↓エラーメッセージもない↓だから、俺は正しい!

まず、警告を出させる、そこからだ

ちょっと待て、おまえは現実から目を背けている。 その辺のコンパイラはお前みたいな軟弱なやつ向けかしらんが、現実を見せないようにしているんだ。

現実を直視しろ!Arduino IDE の環境設定を開いて、「コンパイラの警告」を「全て」にするんだ。 gcc なら "-Wall" オプションを必ずつける。 これで、すべての警告を見せてくれる。現実をつきつけてくれる。

Warning を読め!

C:\....\tmp.ino: In function 'void loop()':
C:\....\tmp.ino:7:8: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   if (v=0) {
       ~^~

【抜粋訳】 プログラム tmp.ino の loop() 関数の中、tmp.ino の7行目、8文字目(空白も数えて):警告:真理値として使用される代入を括弧で囲むことを提案する

if (v=0) のところが代入になっていることがわかる。代入(v=0)ではなく比較(v==0)にしなければならない。

C言語とコンパイラの理解が浅いとメッセージの意味はわからないかもしれないが、少なくとも問題解決のヒントにはなる。


プログラミングに関する参考資料に戻る
いずみ研立命館大学 理工学部 電子情報工学科