ブログタイトルを「FX自動売買システム開発部」から「autoFX」に変更しました!

「undeclared identifier」の原因は、まさかの改行コード

知人からもらったインジケーターを組み込んだEAを作ろうとした時のこと。

コーディングを無事終え、コンパイルしてみたところ、以下のエラーが発生しました。

undeclared identifier

直訳すると、宣言されていない識別子、でしょうか。

「ん?変数の宣言を忘れてたかな?」と思ってコードを見ても、異常なし。見落としがあるのかと思って、殆どのコードをコメントアウトして、からっぽに近いコードにしても変化なし。

ハマりました。

意味不明です。殆ど空のファイルで、おかしなところなんてあり得ません。試しに過去作成したMQ4ファイルをコンパイルしてみたら、ちゃんとコンパイルできました。

やっぱり、今のコードに問題があるようです。八方ふさがりで「う~ん」と悩むこと30分程。

ふと、改行コードが目に入りました。

「あれ?LFになってる…。え、もしかして!?」

改行コードをLF⇒CR+LFに変更してから再コンパイルしたら、無事コンパイル通りました!

知人が送ってくれたファイルの改行コードがLFだったのが原因でした。

デフォルトの改行コードは、OSによって異なります。

改行コード OS
LF Unix系
CR+LF Windows
CR Mac

上記表から、おそらくインジケーターはUnix系OSで作られたのでしょう。Windowsを使ってる人は、普通、改行コードはCR+LFになりますから。

と言うか、多くの人は改行コードなんて意識すらしてないと思います。

同じ問題で苦しんでいる方の参考になれば幸いです。

教訓
MQ4ファイルの改行コードがLFの場合、コンパイルエラーになってしまう。その場合、CR+LFに変換すること。他人からもらったMQ4ファイルは要注意!

トラブル・バグ・エラーの最新記事8件

>完全放ったらかしEA 「AutoEndlessCatchRange」

完全放ったらかしEA 「AutoEndlessCatchRange」

「本業が忙しい!」「でも資産運用したい!」そんなあなたに最適なEAです。兼業トレーダーの方はチャートを毎日みて分析してトレードする時間はなかなか確保できないものです。トレードは本EAに任せて、本業やプライベートの時間をもっと増やしませんか?元々は自分自身のために開発したEAですので、手抜き無しのガチものです。

CTR IMG