エラー、バグ、質問 - ページ 2895

 
A100:
コンパイルエラーです。

以前は動作していましたが、今年の初めに関数ポインタが壊れました、あなたのコードはまだMT4で動作するはずです。

が機能します。

typedef void (*fn)();
void f() {}
fn g() { return f; }
void OnStart()
{
    fn func = g();
    func();
}

つまり、一時変数を使わなければならない(今はポインタの配列も 使えない!!)。

A100:

というのも、ここには矛盾があります。

原理の違いは 何ですか?

ある管理人が昔、解析の方法を書いていました。まず静的変数、次にグローバルに記述されたもの、そして関数本体、テキストの上から下へと解析していくものです。

...が、それは正確ではありません;)

 
Igor Makanu:

つまり、一時変数を使わなければならない(今はポインタ配列も 使えない!!!)。

そのために書いたのが、デベロッパーが一時的にでも

 
A100:

そのために書いたのですが、できればデベロッパーが一時的な

@fxsaber さんが見つけ次第書いているので、おそらく1年は経過していると思いますが、まあ、もしかしたら聞かれるかもしれません。
 
Igor Makanu:

つまり、一時変数を使わなければならない(今はポインタ配列も 使えない!!!)。

できないことを証明する例があるのですか?

 
A100:

できないことを証明する例があるのですか?

は一例を書きました。

typedef void (*fn)();
void f() {}
fn g() { return f; }
void OnStart()
{
//   fn ptr[10];                                                 //possible use of uninitialized variable 'ptr'
   fn ptr[10] = {0};                                             // OK
   for(int i = ArraySize(ptr) - 1; i >= 0; i--) ptr[i] = g();
   
//   for(int i = ArraySize(ptr) - 1; i >= 0; i--) ptr[i]();     //')' - expression expected
   
   for(int i = ArraySize(ptr) - 1; i >= 0; i--)                  // OK
   {
      fn func = ptr[i];
      func();
   }
}

驚いたのは、なぜか警告 fn ptr[10] が生成されることです。//初期化されていない変数 'ptr' が使用されている可能 性があります。

あとは、関数へのポインタを初期化する方法を考えなければなりません。


はMQL5で可能でした: ptr[i]();
 
Igor Makanu:

MQL5では: ptr[i]()の前に使うことができました。

そうですね...そういえば

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

バグ、バグ、質問

A100, 2020.07.23 02:40

コンパイル時のエラー

typedef void (*fn)();
void OnStart()
{
        fn ff[ 1 ];
        ff[ 0 ](); //Error:: ')' - expression expected
} 

去年のビルドでバグが あったんだけど、全部コンパイルして問題なく動 いたよ。

トレーディング、自動売買システム、ストラテジーテストのためのフォーラム

バグ、バグ、質問

A100, 2020.07.23 16:31

私は古いストックからビルド2085x32を ダウンロードしました - すべてうまくコンパイルされています - あなたは自分でそれを試すことができます。

 
コンパイルエラーです。
class EventChartCustom {
      EventChartCustom() {}
};
bool f()
{
    return (EventChartCustom( 0, 0, 0, 0, NULL ) ? true : false); //(1) Error: 'EventChartCustom' - wrong parameters count
}
が、それはそれでいいのです。
bool f()
{
    if (    EventChartCustom( 0, 0, 0, 0, NULL ) ) //(2) нормально
        return (true);
    else
        return (false);
}

根本的な違いは何でしょうか?

 
コンパイルエラーです。
class A {
      A() {}
};
void A() {} //(1) Error: 'A' - identifier already used
が、それでいい。
void A() {} //(2) нормально
class A {
      A() {}
};

根本的な違いは何でしょうか?

 
マーケットプレイスからの経験則
В Продуктах запрещен вызов любых DLL-библиотек, включая системные библиотеки Microsoft Windows.
マーケット製品は、ユーザーがDLLを使用することを許可された場合、その機能を拡張する権利を持つのでしょうか?
 

マーケットプレイスに関する統計は見つかりませんでした。そこで、クロスプラットフォーム製品を販売する方に質問です。

MT5版は本当にMT4より売れているのですか?