defineの専門家に質問 - ページ 2

 
なんと、男の子はパッドがないと生きていけないんです。
 
Nikolai Karetnikov:

ありがとうございました。)

本質的なことです。

そこで、クラスの選択肢を残したのです。defineのパラメータ化など、初歩的なことでも、日常的に使っていないとすぐに忘れてしまう。

神経について。

しかし、そうではなく、無名の天才の魂のどこかに、他のアマチュアを犠牲にしてでも自分を主張したいという欲求があるのです。私は定期的に英語のフォーラムに書き込んでいますが、遭遇することはありません。それを承知で、普段はあまり反応しないようにしているのだが、もしドミトリー君が口喧嘩をしたいのなら、君の発露の中に頭から突っ込むという快感を与えてあげよう。

カット・ザ・フライ、ベイビー

 
Vladimir Simakov:

なぜ、この決断をストレートにその人に見せなかったのですか?)

UPD: bezgovna - スペル no sh...t )))

まあ、私が知らなかったということを楽しんでいるだけなんでしょうけど。だから、自分の素晴らしさにオーガズムを感じて、自分を殴り続けていればいいんです。

 
Dmitry Fedoseev:
やれやれ、男の子はもうパッドがないと生きていけないんですね。

ガスケットについて。

シングルトンは何が良いのか?なぜなら、メインコードですべてを簡潔にまとめながら、ステートを保存したり、複雑なロジックでログを処理したりすることができるからです。こうすることで、適切なプロジェクト・アーキテクチャが構築され、コード自体も読みやすくなるのです。

PS.それ以外は、そう、全ては扇風機に。ここのコミュニティでは、ハンガリー語表記によるスパゲッティ・コードが好きな人が多いし、すべてのティックで すべてのオーダーとポジション(全般)を試すマゾヒズムも素晴らしい)。

 

昔(何年も前)の話ですが.別スレだったか別スレだったか忘れたけど、ベストログについてのスレが既にあった。

しかし、それは少し違った方法で行われました。そこで関数名を変形させ、そこに関数名のマクロ行をいろいろと追加したり......。というように、その場でハンドラを変更することができます。

"#definPRINT prepare; Print "のようなものです。

というスタイルで、プリントそのものを

void Print (string a;string a1="";string a2="";......// と書けないのが残念...a[].

{

プリント(私たちの準備、主張)。

}

defineは普通のprintと同じように扱え、ハンドラを変更することでファイルにデータを書き込んだり、画面に表示したりすることができたのです。引数の数は任意(最大64個) // まだ習っていない人のために。

ちなみに、これは筆者が求めていたことの一部 です))

 
Dmitry Fedoseev:
でも、残念ながら、吸い魔を感動させることはできません。

いかがですか?

申し訳ありませんが、まだアセンブラを使っていた頃の記憶では、マクロ拡張(マクロ )とは、コンパイルの直前にその定義をそのコードに置き換えることができるツールです。

ただ、アセンブラでのプログラミングは少し面倒で、サブルーチンがない。

MQLでのプログラミングは、もう少し快適です。

質問:サブルーチンを書くか、Print("No sheet"); を書くか、プリプロセッサーであらかじめ定義しておくか、どちらが楽でしょうか?

 
Алексей Тарабанов:

(1)したいですか?

申し訳ありませんが、まだアセンブラを使っていた頃の記憶では、マクロ拡張(マクロ )とは、コンパイルの直前にその定義をそのコードに置き換えることができるツールです。

(2)単純に、アセンブラでプログラミングするのは面倒だし、サブルーチンもない。

MQLでのプログラミングは、もう少し快適です。

(3) 質問:サブプログラムを書くのと、Print("No sheet"); を書くのと、プリプロセッサーで何かを事前定義するのと、どちらが楽でしょうか?

1)自分には関係ない質問です。

2)アセンブラにはサブルーチンがある。

3)腐った卵のような価値のない質問にはデタラメを言わない方が気が楽だ。

 
Alexandr Andreev:

昔(何年も前)の話ですが.別スレだったか別スレだったか忘れたけど、ベストログについてのスレが既にあった。

しかし、それは少し違った方法で行われました。そこで関数名を変形させ、そこに関数名のマクロ行をいろいろと追加したり......。というように、その場でハンドラを変更することができます。

"#defin PRINT prepare; Print "のようなものです。

というスタイルで、プリントそのものを

void Print (string a;string a1="";string a2=""; ...... // 64回。 ...a[] と書ければいい んですけどね。

{

プリント(私たちの準備、主張)。

}

defineは通常のprintと同様に扱うことができ、ハンドラを変更することでデータをファイルに書き込んだり、表示したりすることができました。引数の数は任意(最大64個) // まだ習っていない人のために。

ちなみに、これはまさに 著者が求めていたことです))

文字列aN=""と63回......猛烈な勢いですね。

説明しよう。

  1. 文字列は,wchar_t*のラッパーであるオブジェクトです.
  2. string=""とすることで63回、次のことをします:63個の文字列オブジェクトのメモリを確保し(この場合はスタック上)、パラメトリックコンストラクタを呼び出し(63回)、ヒープにあるサイズのwchar_t*バッファを確保し(ちょうどそこに)、その最初の2バイトは0x0000で初期化します(そう、これも63回起こることなのです)。

この場合、ヒープに不要なメモリを確保するための大きなコストを節約することができます。

UPD。いや、間違っている。ちゃんとやれば、ヒープにメモリが割り当てられる ことはない。

 
Vladimir Simakov:

文字列aN=""と63回が激しいです。

説明しよう。

  1. stringはwchar_t*のラッパーであるオブジェクトです。
  2. string=""とすることで63回、次のことをします:63個の文字列オブジェクトのメモリを確保し(この場合はスタック上)、パラメトリックコンストラクタを呼び出し(63回)、ヒープ(ちょうどそこ)にあるサイズのwchar_t*バッファを割り当て、その最初の2バイトは0x0000で初期化します(そう、これも63回起こることなのです)。

この場合、ヒープに不要なメモリを確保するための大きなコストを節約することができます。

UPD。いや、間違っている。ちゃんとやれば、ヒープにメモリが割り当てられる ことはない。

またもや話が通じない。Alexanderは、Print()をdefineで置き換えることについて書いています(ファイル中を這いずり回って全てのprintを探すのを避けるためです)。この問題は、Printは複数のパラメータを持つことができるが、誰もそれをパラメータとして区別していないことである-カンマでつながれた文字列だけである。そこで、標準のPrint関数に代わるものを提供するためには、(Print()関数と完全に一致するように)64個のオプションパラメータを受け付ける関数が必要です。そして、ログの前に何らかのデータを追加する必要があります。例えば、より見やすくするために矢印(==>)の付いた帯、行番号、日付、ファイルへの出力などが考えられます。特に複雑な検索エラーの場合に行われ、その後削除されるため、誰もその速度を全く気にすることができません。

 
string _info;
void _Print(string s,string s1="",string s2="",string s3="",string s4="",string s5="",string s6="",string s7="",string s8="")//.....
   {
   string ss;
   StringConcatenate(ss,s,s1,s2,s3,s4,s5,s6,s7,s8);//....
   //Comment(_info,ss);
   Print(_info,ss);
   }
#define Print _info=__FILE__+" line "+__LINE__ +" "+__FUNCSIG__+" Print: "; _Print

void OnStart()
  {
   
   Templ();
  }
  
void Templ()
   {
   Print("Error, a!=",5," and other....",3,4,5);
   Print("a=",5);
   Print("Hi");
   }


みんな分かっているようですが......。

だからこれは、これから道を歩む人のために...。

我々は、このメソッドは、もし(a!=5)Print(a)で動作するときにマイナスを持っているので、残りの部分を均等にし、statクラスでそれをすべてラップすることができます。それは動作しません、あなたは常にもし(a!=5){Print(a)}、クラスで我々はこの瞬間、しかし私はあまりにも怠惰だ修正できます))と 書く必要があります一般的には、すべての歴史のアーカイブであるようです

クラスと同じように、staticメソッドでデータを初期化し、operatorコールを組み合わせてprint...。とすると、if (a!=5) Print(a); で動作します。