コンパイルを厳格管理するプロパティ strict

MQL4基礎

プリプロセッサ

#property strict

strictはプログラムのプロパティで、厳格なコンパイルをしてエラーや警告箇所を発見してくれます。

通常は設定するようにしてください。又、これを設定した場合、EAの「パラメーターの入力」の変数に日本語が使用できるようになります。

構成

#property strict

使用例

「#property strict」の有無の違い

厳格なコンパイルを実行する「#property strict」が有る時と無い時のコードを比較します。

結論としては、プログラムの間違いを防ぐためにも必ず「#property strict」を設置するようにしてください。

コード

//「#property strict」が有りの時
#property strict 

extern int a = 1;    // 変数aの初期値

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

Print("変数a = ",a); // 変数a = 1
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

「#property strict」が有りの時

「#property strict」が有りの時は、今回の場合、警告(warnings)が発生します。発生理由は、小数点がある数字を整数型にしようとしていたからです。

エキスパートタブに表示される結果も「1.1」にならなければならないところ「1」と小数点以下が切り捨てられて表示されてしまいます。

「パラメーターの入力」画面では、パラメーター入力用のコードと同じ行に書かれたコメントが変数の名称になるので、日本語が表示できるようになり見やすくなります。

ターミナルのエキスパートタブ
「#property strict」が無しの時

「#property strict」を削除かコメントにするなどにして無効化にしてください。

結果は「#property strict」を無しにすると有りの時に発生していた警告が出なくなります。

そのため「#property strict」を無しにした場合、コードの間違いに気付かなくなってしまいます。

コードの修正箇所

今回のコードは、変数 aを int型から double型にすることで解決します。

コードの厳格チェックとパラメーターの入力でも見易くなるので「#property strict」は必ず設置するようにしてください。

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