mql5におけるOOP、テンプレート、マクロ、微妙な使い分け - ページ 18 1...111213141516171819202122232425...28 新しいコメント Seric29 2019.10.23 01:18 #171 この問題を解決するのを助けてください。マクロがあり、その中にコードを追加して結果を返したい。 #define FOR3(a,b,c,loop) {for(int i=0; i<a; i++)\ for(int j=0; j<b; j++)\ for(int k=0; k<c; k++)\ {loop;}/*код хочу дописать в этом месте и вернуть результат но эта штука работает только как void*/} 与えられた場所にコードを追加して、マクロから結果を返せるようにすることは可能ですか?コードを追加することができます。試してみましたが、returnを書くと効果が期待できません。こんな例を見ました double Try_helper; #define Try(EXPR, MES) \ Try_helper = EXPR; \ if (Try_helper <= 0.0) { \ printf("Error: %s ", MES); \ return 4; \ } リターンが効くスレッドのこちらで。 削除済み 2019.10.23 02:08 #172 Seric29: この問題を解決するのを助けてください。マクロがあり、その中にコードを追加して結果を返したい。 与えられた場所にコードを追加して、マクロから結果を返せるようにすることは可能ですか?コードを追加することができます。試してみましたが、returnを書くと効果が期待できません。こんな例を見ました このトピックでは、リターンワークスについて説明します。 他の関数(ループ本体など)へのポインタを渡した関数を呼び 出す。 int for3(int a, int b, int c, void(*loop)()) { for(int i=0; i<a; i++) for(int j=0; j<b; j++) for(int k=0; k<c; k++) loop(); return 4; } ... void fn() {} ... if ( for3(1, 2, 3, fn) ) printf("hellow world"); Seric29 2019.10.23 02:27 #173 Vict: 他の関数へのポインタを渡した関数を呼び 出す(例えばループの本体など) こんなことができるなんて知らなかったのですが、私の目標は、多くのコマンドを実行する複雑な複数行のマクロを書くことです、おそらくマクロでは多くのコマンドを実行できず、関数にすることは不可能なのでしょうか?時々、関数から例えばループを抽出する必要があるのですが、可能でしょうか、もしかしたら私は無意味なことを書いているかもしれません。 削除済み 2019.10.23 02:54 #174 Seric29: こんなことができるなんて知らなかったのですが、私の課題は、多くのコマンドを実行する複雑な複数行のマクロを書くことです、マクロでは多くのコマンドを実行できないので関数にするのは無理なんでしょうか?関数からループを作る必要がある場合がありますが、可能なのでしょうか、もしかしたらナンセンスなことを書いているのかもしれません。 課題が何なのか、そこを掘っているのかどうかは分かりませんが、一目瞭然、別のアプローチです。 #define CHECKCONT_INST(_NAME) \ bool _NAME(upindex_t start, upindex_t top) \ double lev_k[] = {CHECKCONT_INST_LEVELS}; \ ... \ } \ #define CHECKCONT_INST_LEVELS CHECKCONT_INST(check_cont_withoutlev); #undef CHECKCONT_INST_LEVELS #define CHECKCONT_INST_LEVELS 1.618 CHECKCONT_INST(check_cont_1618); #undef CHECKCONT_INST_LEVELS #define CHECKCONT_INST_LEVELS 1.618, 2.618 CHECKCONT_INST(check_cont_2618); #undef CHECKCONT_INST_LEVELS check_cont_withoutlev(0, 10); check_cont_1618(0, 10); check_cont_2618(0, 10); こうすることで、関数の任意の部分(私の場合、必ずしも配列充填とは 限りません)を置き換え、必要に応じてインスタンス化することができます。 Dmitry Fedoseev 2019.10.23 04:20 #175 #define FOR3(a,b,c,code) \ for(int i=0; i<a; i++) \ for(int j=0; j<b; j++) \ for(int k=0; k<c; k++){ \ code; \ } void OnStart(){ string x=""; FOR3(2,3,4,x=x+(string)i+","+(string)j+","+(string)k+";\n"); Alert(x); } Dmitry Fedoseev 2019.10.23 04:30 #176 Seric29: こんなことができるなんて知らなかったのですが、私の課題は、多くのコマンドを実行する複雑な複数行のマクロを書くことです、マクロでは多くのコマンドを実行できないので関数にするのは無理なんでしょうか?関数からループを作る必要がある場合がありますが、可能なのでしょうか、もしかしたら無意味なことを書いているのかもしれません。 可能ですが、こうはいきません。 Seric29 2019.10.23 05:27 #177 Dmitry Fedoseev: できるけど、こうはいかない。 このマクロは無効で、結果を返すためには計算する式が必要で、言い換えれば、マクロの中で関数を呼び出す必要がある、この結論に達しました。 Seric29 2019.10.23 05:30 #178 Vict: 他の関数(ループ本体など)へのポインタを渡した関数を呼び 出す。 私は関数ポインタを勉強しました、正直なところ、私はそれが何のためにあるのか理解できませんでした、実際には変数の代わりに関数を呼び出すことができますし、しっかりと私に来るかもしれません、関数ポインタは、オーバーロードまたはポリモーフィズムに似ています。 削除済み 2019.10.23 05:41 #179 Seric29: 関数ポインタを勉強しているのですが、正直なところ何のために あるのか理解していません。基本的には変数の代わりに関数を呼び出すことができます。たぶん、私は難しいと思っています。関数ポインタはオーバーロードやポリモーフィズムのようなものだと考えています。 あるアルゴリズムの中に、特定の問題を解決するために、いわば「微調整」するためのサブアルゴリズムを入れることができるのです。要するに、仮想関数の アナログです。主なものは、あなた自身がそれを求めたのに、その理由がわからないということです)、あなたはフレームワークを持ち、その中にループを入れました。 Dmitry Fedoseev 2019.10.23 13:46 #180 Seric29: このマクロは無効で、結果を返すには計算する式が必要、つまりマクロの中で関数を呼び出す必要がある、そう考えるようになりました。 はい、まずこの「magic-miracle」コードをコンパイルしてみてください。ここで現実から切り離されて荒唐無稽に妄想してる奴がいるんだよ。 1...111213141516171819202122232425...28 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
この問題を解決するのを助けてください。マクロがあり、その中にコードを追加して結果を返したい。
与えられた場所にコードを追加して、マクロから結果を返せるようにすることは可能ですか?コードを追加することができます。試してみましたが、returnを書くと効果が期待できません。こんな例を見ました
リターンが効くスレッドのこちらで。
この問題を解決するのを助けてください。マクロがあり、その中にコードを追加して結果を返したい。
与えられた場所にコードを追加して、マクロから結果を返せるようにすることは可能ですか?コードを追加することができます。試してみましたが、returnを書くと効果が期待できません。こんな例を見ました
このトピックでは、リターンワークスについて説明します。
他の関数(ループ本体など)へのポインタを渡した関数を呼び 出す。
他の関数へのポインタを渡した関数を呼び 出す(例えばループの本体など)
こんなことができるなんて知らなかったのですが、私の目標は、多くのコマンドを実行する複雑な複数行のマクロを書くことです、おそらくマクロでは多くのコマンドを実行できず、関数にすることは不可能なのでしょうか?時々、関数から例えばループを抽出する必要があるのですが、可能でしょうか、もしかしたら私は無意味なことを書いているかもしれません。
こんなことができるなんて知らなかったのですが、私の課題は、多くのコマンドを実行する複雑な複数行のマクロを書くことです、マクロでは多くのコマンドを実行できないので関数にするのは無理なんでしょうか?関数からループを作る必要がある場合がありますが、可能なのでしょうか、もしかしたらナンセンスなことを書いているのかもしれません。
課題が何なのか、そこを掘っているのかどうかは分かりませんが、一目瞭然、別のアプローチです。
こうすることで、関数の任意の部分(私の場合、必ずしも配列充填とは 限りません)を置き換え、必要に応じてインスタンス化することができます。
こんなことができるなんて知らなかったのですが、私の課題は、多くのコマンドを実行する複雑な複数行のマクロを書くことです、マクロでは多くのコマンドを実行できないので関数にするのは無理なんでしょうか?関数からループを作る必要がある場合がありますが、可能なのでしょうか、もしかしたら無意味なことを書いているのかもしれません。
可能ですが、こうはいきません。
できるけど、こうはいかない。
このマクロは無効で、結果を返すためには計算する式が必要で、言い換えれば、マクロの中で関数を呼び出す必要がある、この結論に達しました。
他の関数(ループ本体など)へのポインタを渡した関数を呼び 出す。
私は関数ポインタを勉強しました、正直なところ、私はそれが何のためにあるのか理解できませんでした、実際には変数の代わりに関数を呼び出すことができますし、しっかりと私に来るかもしれません、関数ポインタは、オーバーロードまたはポリモーフィズムに似ています。
関数ポインタを勉強しているのですが、正直なところ何のために あるのか理解していません。基本的には変数の代わりに関数を呼び出すことができます。たぶん、私は難しいと思っています。関数ポインタはオーバーロードやポリモーフィズムのようなものだと考えています。
あるアルゴリズムの中に、特定の問題を解決するために、いわば「微調整」するためのサブアルゴリズムを入れることができるのです。要するに、仮想関数の アナログです。主なものは、あなた自身がそれを求めたのに、その理由がわからないということです)、あなたはフレームワークを持ち、その中にループを入れました。
このマクロは無効で、結果を返すには計算する式が必要、つまりマクロの中で関数を呼び出す必要がある、そう考えるようになりました。
はい、まずこの「magic-miracle」コードをコンパイルしてみてください。ここで現実から切り離されて荒唐無稽に妄想してる奴がいるんだよ。