コンパイルエラーの解決方法

コンパイルエラーの解決方法 解説・方法

MetaEditorのコンパイルエラーには大きく2つあります。

1つ目は、エラー(error)です。
コンパイルが出来ないのでプログラムが成立せず実行することが出来ません。

2つ目は、警告(warning)です。
しかし、コンパイルは出来るのでプログラムは実行できます。但し、結果に間違いがある可能性があります。これは、その時々の内容にもよるものなので警告が出ていても結果に間違いがなく動く場合もあります。

いずれにせよ、確認して修正する方が良いに決まっています。

では、実際のプログラムで確認してみましょう。
プログラムは、EAを実行した時に最初に一回だけ読み込まれる OnInit関数の中に書くことにします。

次のコードを MetaEditorに入力してエラーが出ることを確認してください。

#property strict
//コンパイルを厳格にさせる命令です

int OnInit()
{
int a = 1;
a = a + 0.1;
//変数aの小数点以下が切り捨てられるため警告が出ます

print("a = ",a);
//Print関数の最初が小文字のためエラーになります

return(INIT_SUCCEEDED);
}

1 errors, 1 warning」と出ますので、それぞれのエラー(警告)の行をクリックすると、その対象になるプログラム行の左側にマークがつきます。英語ですが、親切にエラー(警告)の内容も教えてくれます。英語が苦手な人はGoogle翻訳を使うと良いです。

今回の場合、
「print(a)」→「Print(a)」にすれば、関数の書き間違いで発生したerrorsが解消されます。
「int a = 1;」→「double a = 1;」にすれば、データ型が一致したのでwarningsが解消されます。

説明のとおりエラーを解消してみてください。

1行目にある「#property strict」はコンパイルエラーを厳しく見るためのものです。今回の場合、この行を消すと警告(warnings)が発生しません。ですので「#property strict」は必ず書いておくようにしてください。

各命令の行の最後に「」を付け忘れたり「全角のスペース」が混ざるとエラーがたくさん発生することがあります。また、全角スペースの発見は困難です。全角スペースの対策は次のページを参考にしてください。

エラーがたくさん発生した場合は、プログラムの上の行からエラーの発生原因をチェックしていくと良いでしょう。


以上、エラーと警告の確認です。
エラーや警告は英語で書かれていますが、翻訳サイトを使えば大体わかります(専門用語は分かり難いかもです)ので調べながら問題を解決していくと良いでしょう。

コンパイルエラーが無いからプログラムに問題無い!!ということにはなりません。コンパイルエラーはデータ型や間違った文字、間違った書き方が無いかを見ているだけです。ですのでコンパイルが出来ても、実際にEAを動かすとこちらが意図していない動作をしてしまうことが多々あります。そのためEA作成後、ストラテジーテスターデモ口座で仕様のとおり動いているかチェックすることが必要になります。もしここで、仕様のとおり動いていない場合はデバッグ処理を行なう必要があります。

タイトルとURLをコピーしました