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

アイキャッチ

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

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

undeclared identifier

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

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

ハマりました。

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

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

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

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

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

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

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

改行コードOS
LFUnix系
CR+LFWindows
CRMac

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

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

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

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

ブログランキングに参加中!

ポチっとクリック頂けると励みになります♪
(クリックしてもランキング一覧が表示されるだけですが、それでOKです)

  にほんブログ村 為替ブログ FX システムトレード派へ

コメントを残す



4 + thirteen =