①Case 1
#property strict
void OnTick()
{
int a;
int b=a;
}
ここではstrict モードにして、関数内でローカル変数 a を宣言し中身を入れていません。
次に b=a で a を参照させコンパイルするとこんな警告が出ます。
possible use of uninitialized variable 'a' test.mq4 5 8
②Case2
#property strict
void OnTick()
{
int a=0;
int b=a;
}
a の宣言時に 0 を代入すると
警告は出ません。
③Case3
#property strict
void OnTick()
{
int a;
Comment(a);
}
こうした場合には警告は出ません。
0 と表示されます。
引数(ひきすう)として渡した場合は参照してもいいようです。
④Case4
#property strict
int a;
void OnTick()
{
int b=a;
}
グローバルエリアで a を宣言しました。
この場合も警告は出ません。
strict モード宣言時にローカル変数内で宣言した変数を初期化(なにかを代入)せずに参照すると警告が出ます。
警告が出ても、正常にコンパイルでき値も0として扱われます。
結論
変数は出来るだけグローバルエリアで宣言するましょう。
0 件のコメント:
コメントを投稿