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

 
A100:

出力は正確に文字列リテラルに なります。これが、印刷が全くない証拠です。

コンパイラの警告は信じられない!

'+' は文字列ではありません !mql ushort 2 bytes

dot で、文字型です。

これは、警告の記述に誤りがある可能性が高いです。

 
Roman:

コンパイラの警告が信じられない!
' 文字列ではありません!文字型です!(笑)

警告の記述に誤りがある可能性が高いです。

それは信仰や推測の問題ではありません - 私たちは証明が必要です:typenameが非文字列リテラルを返すことを証明するプリントのない例は、そこにありますか?あったら、続けましょう。

 
A100:

文字列でないリテラルが返されることを証明するプリントのない例はないのですか?あったら、続けましょう。

typenameは名前を返すが、それは文字列として返す理由 である
多分、しかし、それはどのような違いをもたらすのでしょうか?
型名が分かって、得したね。 何を証明したいのか理解できないんだけど?
typenameは型の文字列を返しますが、論理的には名前を返します
型名を返す、つまり型が文字で書かれているという意味です ))
んなタイプで返すのか、まったく考えずにしがみつきましたね
とにかく、議論することは何もないのです。
 
Roman:
typenameは 名前を返すので、文字列として 返す のですが そうかもしれませんが、どんな違いがあるのでしょうか?

否定する段階は過ぎたようですね...。自覚のステージが始まるお任せします。

 
A100:

否定する段階は過ぎたようですね...。自覚のステージが始まるお任せします。

もう一度言いますが、私は「型そのものが復活する」と主張したのではなく、「型のNAMEが復活する」と主張したのです。
NAMEを返すタイプとは、会話の中で全く考えたことがないのですが。
だから実現段階は関係ない。名前が文字列なら文字列であることは明らかなのだ。
しかし、mql ushortもあるんだから、typenameに12バイトの文字列を突っ込むのはどうかと思う。
型そのものが返されるのであれば、まったくもって興ざめです ))
オンザフライで変数が定義できる ))
コンパイルしたプログラムで可能かどうかは分かりませんが、実際には通常のメモリ割り当てに なりますね。

 
A100:

これは抽象的な言語での話ですが、MQLは抽象性を持っていません。本来は速度と組み合わせることはできないはずです

ここでは、12バイトを文字列型として、別の方法で確認します。

Print(sizeof(typename()));
 
Roman:

以下は、12バイトを文字列型として 確認する別の方法です。

すべては、「ドキュメント」が正しかったということだ(ただし、これも 状況証拠である)。

 
結局、システムをごまかしました。

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

バグ、バグ、質問

A100, 2020.10.09 00:38

コンパイルエラーです。
void OnStart()
{
    Print(typename("ushort"));      //(1) нормально
    Print(typename(typename('+'))); //(2) Error: 'typename' - unexpected token
}

Double 型番

template<typename T>
T f( T ) { return typename(T); }
void OnStart()
{
        Print(f(typename('+')));
}

結果:文字列

間接的 ではなく、直接的な証明になるわけです。
 
A100:

ましてや、Documentationに正しく書かれているのだから


typenameはテンプレート用に設計されているので、型の文字列を 返します
私が最初にTYPE名ではなく、NAME型を返すと書いたことを理解していなかっただけです ))
そして、あなたは私に戻り文字列を説明し始めました )
私は混乱して疑い、ushortは返すことができると思いました。
しかし、いや、それにしてもひもじい。

 
Roman:

もちろん、ドキュメントを 読まない私が悪いのですが、この投稿を作ったのは私です

(typename)J

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

バグ、バグ、質問

ローマン さん 2020.10.07 17:20

はい、これもコンパイルエラー です

#define  J '+'          // char

void OnStart()
{
    Print((typename)J);
}
#define  J '+'          // char

void OnStart()
{
    Print((typename)(J));
}