Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе. Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в...
// В коде содержится ошибка, которая остановит выполнение этого советника.inputint Range = 0;
class A
{
public:
void f() {}
};
A* const a = new A;
voidOnInit() { a.f(); }
voidOnDeinit( constint ) { delete a; }
// В коде содержится ошибка, которая остановит выполнение этого советника.inputint Range = 0;
class A
{
void f() {}
public:
A()
{
static A* Tmp = &this;
Tmp.f();
}
};
voidOnInit() { A a; }
なぜコンパイラが悪態をつき始めたのか、教えてください(スクリーンショットを添付します)。
1年前は何も問題なかったのですが、今は最新の端末を入れてコンパイルすると、このようになります。
これらのメッセージに対する 答えはどこにあるのでしょうか?
また、この警告を正しく解決するにはどうしたらよいでしょうか。
3枚目のスクリーンショットを追加 - 無害なコードでも同じメッセージが表示されるようになりました。
と4枚目のスクリーンショット
コンパイラの制約とその解決方法について教えてください。
そんなクセモノに出会いました。
静的フィールドを持つクラスの定義中に、そのオブジェクトをすぐに生成すると、コンパイルエラーに なります。
前バージョンでは、コンパイラはクラス内に型のない変数があっても文句を言いませんでした。しかし、EAが起動時にクラッシュした
偶然見つけた "ある機能 "とは...。4から5へのインジケータを翻訳するのに1時間以上費やしました。コードはクロスプラットフォームのようだったので、どこにエラーがあるのかわかりませんでしたが、結局、目立たないところにありました。
改善?
はまだあるのでしょうか?
ストリングコンカテネート
他にもいろいろあると思うので、そのような機能の完全なリストも欲しいところです
---
標準ライブラリの#endifを検索してみるのもいいかもしれません。
しかし、戦闘参謀が動かなくなる事態に遭遇した。なんとか原因を突き止める。ほとんど気づかないような、クールなニュアンス。
このコードで問題を見てみると、実感がわくと思います。
しかし、戦闘参謀が動かなくなる事態に遭遇した。なんとか原因を突き止める。ほとんど気づかないような、クールなニュアンス。
このコードで問題を見てみると、本当に実感がわきますよ。
主なルールの1つは、どのレベルでオブジェクトを構築しても、同じレベルでそれを破壊する必要があることです。高くても低くてもダメ。
ありがとうございます、良いルールですね。自分の無能さの犠牲者になった。本当に、もっと分かりやすいルールが必要ですね。
たぶん、どちらの場合にも Warning clever to do?
しかし、戦闘参謀が動かなくなる事態に遭遇した。なんとか原因を突き止める。ほとんど気づかないような、クールなニュアンス。
このコードで問題を見てみると、本当に実感がわきますよ。