#のりっくブログ

MT4でFX自動売買、パソコン、スマホ、タブレット、ゲーム等、好きなことを気ままに記録していくブログです。

TC9 EAのコンパイル時に出た変数の警告について確認しました

どうも、のりっくです。

7月16日12時からAmazonプライムデーが始まりますね!今から買いたい本をリストに入れて待機しています。楽しみ~♪

f:id:Norix7:20180708221210p:plain

EAコンパイル時に出た変数の警告について確認してみました

さて、今日は以前EAをコンパイルした時に出た変数の警告について確認してみました。

どういうことかというと、私は汎用的な関数をヘッダファイルに作成しておいて、EA本体を作成するときにインクルードして使用しています。

以前コンパイルするときに変数に関して警告が表示された記憶があったんですが、そのときはあまり深く考えずにEA本体側の変数名を適当に変更して終わらせてしまったんです。

で、それ以来ずっとその警告が出たことが頭の片隅にあって、汎用関数を作成するときは一応変数名が他の関数のものと被らないように名前を付けたりしていました。

ただ、最近EA開発活動を再び活発にし始めて、変数名を一々気にするのが面倒だなぁと思うようになってきましたので、どういうときにあの警告が出るのか、簡単な対策は何かを確認しようと思ったわけです。

どんなときにどんな警告が出たの?

昨日分割エントリーをする関数を作成して、適当なEAの発注部分に関数を突っ込んでコンパイルした際に以下のような警告が出ました。

declaration of 'result' hides global declaration in file 'SimpleTradeEA.mq4' at line 15

確認してみると、EA本体側でグローバル変数として宣言している変数名とヘッダファイル側の関数内で宣言している変数名が重複していました。

一応、試しにヘッダファイル内の異なる関数内で同名の変数名を宣言しても警告は表示されませんでした。(まぁ当たり前ですね。)

グローバル変数名にprefixを付けてればOK

変数名の警告への対策は、グローバル変数には適当なprefixを付けるルールにしてあげればいいだけです。

これまで「EA本体とヘッダファイルの関数で同じ変数名が使えないなんて変だなぁ。MQLの仕様なんだろうか。」と思いつつ、変数名を重複しないよう苦労してきましたが、グローバル変数が警告の原因と分かってみると、警告が出るのも当たり前の状況でしたし、対策も笑ってしまうほど簡単でした。

 

ということで、今後私はとりあえずグローバル変数名の頭に「gl_」と付けることにしました。

たったこれだけで変数名をいちいち気にすることなく、気楽に関数を作っていけるようになりました。嗚呼、幸せ(^0^)♪

 

それではまたがんばりましょう!