Erreurs, bugs, questions - page 2871

 
Roman:

Je ne crois pas à l'avertissement du compilateur !
' Ce n'est pas une chaîne de caractères ! c'est un type de caractère !

Il s'agit plus probablement d'une erreur dans la description de l'avertissement.

Ce n'est pas une question de foi et de conjecture - nous avons besoin de preuves : un exemple sans impression prouvant que typename renvoie un littéral qui n'est pas une chaîne de caractères existe-t-il ? Quand c'est le cas, continuons.

 
A100:

Ce n'est pas une question de foi et de conjecture - nous avons besoin de preuves : existe-t-il un exemple sans impression prouvant qu'une chaîne de caractères non littérale est renvoyée ? Quand c'est le cas, continuons.

Bien que typename renvoie un nom, c'est pourquoi il renvoie une chaîne de caractères
peut-être, mais quelle différence cela fait-il ?
Vous avez le nom du type et vous l'avez obtenu. Je ne comprends pas ce que vous voulez me prouver ?
Que typename renvoieune chaîne de caractères de type, eh bien logiquement, il renvoie un nom.
Je voulais dire qu'il renvoie le nom du type, c'est-à-dire que le type est écrit en lettres ;))
Je n'ai
pas du tout pensé au type de retour et tu t'es accroché à lui.
De toute façon, il n'y a pas de quoi se disputer.
 
Roman:
Bien que typename renvoie un nom, il renvoie donc comme chaîne de caractères
peut-être, mais quelle différence cela fait-il ?

Vous semblez avoir dépassé le stade du déni... l'étape de la prise de conscience commence. Je vous laisse faire.

 
A100:

Vous semblez avoir dépassé le stade du déni... l'étape de la prise de conscience commence. Je vous laisse faire.

Une fois encore, je n'ai pas prétendu que le type lui-même revenait, j'ai prétendu que le NOM du type revenait.
Quel type de retour NOM, je n'ai pas du tout pensé à ça dans notre conversation.
C'est pourquoi l'étape de réalisation n'intervient pas ; il est clair que le nom est une chaîne, si c'est une chaîne.
Mais il y a aussi mql ushort, bon sang, alors j'ai douté, que dans typename va se glisser une chaîne de 12 octets.
Si le type lui-même était renvoyé, ce serait un comble ))
On pourrait définir des variables à la volée ))
Je ne sais pas si c'est possible dans un programme compilé, en fait c'est l'allocation de mémoire habituelle.

 
A100:

Il s'agit de langages abstraits, mais MQL n'a pas d'abstraction - il ne peut donc pas être combiné avec la vitesse.

Voici une autre façon de vérifier, 12 octets comme type de chaîne de caractères.

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

Voici une autre façon de vérifier, 12 octets comme type de chaîne de caractères.

D'autant plus, cela signifie que la Documentation était correcte (mais c'est aussi une preuve circonstancielle).

 
J'ai triché avec le système après tout.

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Bugs, bugs, questions

A100, 2020.10.09 00:38

Erreur de compilation :
void OnStart()
{
    Print(typename("ushort"));      //(1) нормально
    Print(typename(typename('+'))); //(2) Error: 'typename' - unexpected token
}

Double typename

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

Résultat : chaîne de caractères

C'est donc une preuve directe, pas indirecte.
 
A100:

Raison de plus pour que la documentation soit correcte.

Oui, dans la documentation des modèles, tout est décrit correctement.
typename est conçu pour les modèles, il renvoie donc la chaîne de caractères du type
Vous n'avez tout simplement pas compris que j'ai initialement écrit qu'il renvoie le type NOM, et non TYPE nom ))
Et vous avez commencé à m'expliquer la chaîne de caractères de retour)
J'étais confus et j'ai douté, et j'ai pensé que ushort peut retourner.
Mais non, une ficelle quand même.

 
Roman:

Bien sûr, c'est ma faute, je ne lis pas la documentation et j'ai inventé ce message.

(typename)J

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

Romain, 2020.10.07 17:20

Oui, c'est aussi une erreur de compilation

#define  J '+'          // char

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

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

 
A100:

Bien sûr, c'est ma faute, je ne lis pas la documentation et c'est moi qui l'ai inventé.


Oui, je m'en souviens bien, c'est pourquoi je vous ai posé une question.
C'est juste que la documentation ne décrit pas l'utilisation detypename() dans une telle syntaxe, comme c'est le cas pour sizeof()
. Dans la documentation des modèles, il n'y a qu'un exemple d'utilisation dans une telle syntaxe.
J'ai donc supposé que (typename)
serait également autorisé
Mais non, mon erreur. Merci pour cette conversation si sensible. Nous nous sommes compris et nous avons tout compris.