エニュメレーションを一貫して行うにはどうしたらいいですか? - ページ 6 12345678 新しいコメント fxsaber 2016.08.31 17:56 #51 pavlick_:プログラマーへの注意点 これで、列挙を編集する必要がある場合、一度に一箇所で編集できるようになりました。新しい要素を追加する必要があります。例えば、element_new = 56の場合、次のように追加します。また、関数 get_enumqq_array() をわざわざ編集する必要はない。その手法は「Xマクロ https://en.wikipedia.org/wiki/X_Macro 」と呼ばれています。開発者が望めば、同様の方法で標準的な列挙型を簡単に変更することができる。すぐにはわからないかもしれないが、列挙するとこのようになった。カッコイイ!X Macroは知りませんでした!ありがとうございます。ENUM_QQ_HELPERの定義の最後にコンマがあるため、なぜエラーが発生しないのか、このコードが理解できません。enumやarrayを定義する場合、最後の要素の後にカンマがあってはならない。しかし、コンパイラはなぜか悪態をつかないようです。を試してみました。int a[] = {1, 2,};それはないでしょう。そして、配列サイズ(enum)はその通りです。かっこいいですねー。バグらしいのですが、むしろこんなバグがあってもいいのでは?本当に、便利です。 pavlick_ 2016.08.31 18:02 #52 コンマによるエラーが発生しない理由 まあ、特にこういういろいろな「もの」については、正当な違反行為らしい。C/C++でもエラーにならないので、心配しないでください。SZZ:初期化というテーマでC++標準に。braced-init-list: {initializer-list , opt} { }すなわち、braced-init-listの最後のコンマは、最高レベルで合法化されている。 fxsaber 2016.08.31 18:32 #53 pavlick_:つまり、braced-init-listの最後のカンマは、最高レベルで合法化されているのである。 ありがとうございます!知って使いたいと思います。 TheXpert 2016.08.31 19:47 #54 pavlick_:プログラマーへの注意点コメントにあるような普通の名前はどうなんだろう? fxsaber 2016.08.31 19:56 #55 Комбинатор:コメントにあるような普通の名前はどうなんだろう? 問題のenumの例を教えてください。 pavlick_ 2016.08.31 20:41 #56 Комбинатор:コメントにあるような普通の名前はどうなんだろう?はい、コメントの挿入がうまくいきません。列挙型のコメントには不都合な構文があります。問題のenumの例を教えてください。enum E { a = 1 // вот этот комментарий } fxsaber 2016.08.31 21:34 #57 pavlick_:はい、コメントの挿入がうまくいきません。列挙のコメントに関する残念な構文。 最後に/*...*/で締めくくります。 pavlick_ 2016.08.31 21:48 #58 fxsaber:/*...*/で結んでください。 プリプロセッサーがコメント(//と/*の両方)を食べたがらず、マクロを展開するときにそれらを見ることを期待していないことがここでのナンセンスです。 プリプロセッサーに関するルールを変更するか、次のような列挙をコメントする代替方法(設定でのスクリプト実行時にコメントが表示される)を導入してください。 enum E { a = 1, --**-- Комментарий_1 b = 2 --**-- Комментарий_2}; 私はここですでに無力なのだ。 prostotrader 2016.08.31 21:58 #59 pavlick_: プリプロセッサはコメント(//と/*の両方)を食べたがらないので、マクロが展開されるときにコメントが表示されることを期待していません。 プリプロセッサのルールを変更するか、次のように列挙型のコメント(設定でスクリプトを実行するとコメントが表示されます)に代わる方法を導入してください。 enum E { a = 1, --**-- Комментарий_1 b = 2 --**-- Комментарий_2}; 私はここですでに無力なのだ。 pavlick_ 2016.08.31 22:07 #60 前処理はいくつかのステップで行われます。まず、ソースコードからすべてのコメントを削除し、その結果を送信して処理します。そして、ここはプリプロセッサがコメントに遭遇することを予期していない場所です(マクロを開くとき)。そのような出会いをエラーとみなします。例えば、ここ。#define COMMENT / ## / void OnStart() { COMMENT } 一見すると、この無害なコードにはコメントが含まれているはずです。でも、コンパイルできない。 12345678 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
プログラマーへの注意点
これで、列挙を編集する必要がある場合、一度に一箇所で編集できるようになりました。新しい要素を追加する必要があります。例えば、element_new = 56の場合、次のように追加します。
また、関数 get_enumqq_array() をわざわざ編集する必要はない。その手法は「Xマクロ https://en.wikipedia.org/wiki/X_Macro 」と呼ばれています。開発者が望めば、同様の方法で標準的な列挙型を簡単に変更することができる。
すぐにはわからないかもしれないが、列挙するとこのようになった。
カッコイイ!X Macroは知りませんでした!ありがとうございます。ENUM_QQ_HELPERの定義の最後にコンマがあるため、なぜエラーが発生しないのか、このコードが理解できません。enumやarrayを定義する場合、最後の要素の後にカンマがあってはならない。しかし、コンパイラはなぜか悪態をつかないようです。
を試してみました。
それはないでしょう。そして、配列サイズ(enum)はその通りです。かっこいいですねー。バグらしいのですが、むしろこんなバグがあってもいいのでは?本当に、便利です。
まあ、特にこういういろいろな「もの」については、正当な違反行為らしい。C/C++でもエラーにならないので、心配しないでください。
SZZ:初期化というテーマでC++標準に。
braced-init-list:
{initializer-list , opt}
{ }
すなわち、braced-init-listの最後のコンマは、最高レベルで合法化されている。
つまり、braced-init-listの最後のカンマは、最高レベルで合法化されているのである。
プログラマーへの注意点
コメントにあるような普通の名前はどうなんだろう?
コメントにあるような普通の名前はどうなんだろう?
コメントにあるような普通の名前はどうなんだろう?
はい、コメントの挿入がうまくいきません。列挙型のコメントには不都合な構文があります。
問題のenumの例を教えてください。
はい、コメントの挿入がうまくいきません。列挙のコメントに関する残念な構文。
/*...*/で結んでください。
enum E {
a = 1, --**-- Комментарий_1
b = 2 --**-- Комментарий_2
};
プリプロセッサはコメント(//と/*の両方)を食べたがらないので、マクロが展開されるときにコメントが表示されることを期待していません。 プリプロセッサのルールを変更するか、次のように列挙型のコメント(設定でスクリプトを実行するとコメントが表示されます)に代わる方法を導入してください。
enum E {
a = 1, --**-- Комментарий_1
b = 2 --**-- Комментарий_2
};
前処理はいくつかのステップで行われます。まず、ソースコードからすべてのコメントを削除し、その結果を送信して処理します。そして、ここはプリプロセッサがコメントに遭遇することを予期していない場所です(マクロを開くとき)。そのような出会いをエラーとみなします。例えば、ここ。
一見すると、この無害なコードにはコメントが含まれているはずです。でも、コンパイルできない。