Erreurs, bugs, questions - page 2868

 
Une erreur de compilation :
void OnStart()
{
        Print(typename( char(0))); //Error: '0' - some operator expected
}

mais de cette façon :

        Print(typename((char)0) ); //нормально

Quelle différence cela fait-il ?

 
A100:
Erreur de compilation :

mais de cette façon :

Quelle différence cela fait-il ?

Il semble que seul "(type) value" soit une conversion de type, mais "type (value)" est une sorte d'initialisation, qui dans votre cas ne peut rien retourner. Je n'ai pas ouvert de μl depuis longtemps cependant )).

 
Alexandr Andreev:

Dans µl, seul "(type) value" semble être une conversion de type, mais "type (value)" est une sorte d'initialisation, qui dans votre cas ne peut rien retourner. Je n'ai pas ouvert de μl depuis longtemps cependant )).

Alors ouvrezhttps://www.mql5.com/ru/docs/basis/types/casting

Unité : Conversion des types numériques."La conversion explicite de type s'écrit comme suit"... plus loin dans le texte

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 

Oui, je l'ai vérifié aussi, je me souviens être tombé dessus il y a longtemps à propos de ce que j'ai écrit ci-dessus. Je m'excuse pour les informations incorrectes).

 
A100:
Erreur de compilation :

mais de cette façon :

Quelle différence cela fait-il ?

Oui, c'est aussi une erreur de compilation

#define  J '+'          // char

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

void OnStart()
{
    Print((typename)(J));
}
 
Vladimir Simakov:
La logique des développeurs est assez claire mais, quant à moi, je ferais mieux de spécifier clairement u'y' quand et si j'en ai besoin

Je ne comprends pas cette logique. Quand il y a une optimisation totale partout et partout, et la réduction des ressources comme priorité,
pourquoi faire le type de caractère de base dans Unicode en l'augmentant à 2 octets.
Par conséquent, le type de chaîne mql s'avère coûteux.
Vraiment, il est préférable d'avoir un spécificateur supplémentaire u'sh'

char par le fantôme du type est seulement substitué.

#define  J (char)'+'     // char

void OnStart()
{
    Print(J);           // 43
    Print(typename(J)); // char
}

Mais dans ce cas, nous avons une différence de types.

#define  J '+'              

void OnStart()
{
   Print(J);                // 43
   Print(typename(J));      // ushort
   Print(typename(char));   // char
}

C'est un vrai bordel avec cet Unicode.

 
Roman:

Oui, il s'agit également d'une erreur de compilation.

Vous avez une erreur de syntaxe - donnez-nous un exemple de code fonctionnel avec (typename) entre parenthèses. Vous pourriez aussi bien écrire (OnStart) entre parenthèses

 

Un autre exemple de message douteux du compilateur MQL :

#ifdef __MQL__
void OnStart() {
{
}
#endif //Error: '#endif' - unexpected end of program

Qu'est-ce que le #endif a à voir avec cela - et comment deviner où se trouve réellement l'erreur ?

au moment où le C++ informe de l'erreur

#ifdef __cplusplus
void OnStart() {
{
} //Error: expected '}' at end of input
#endif
 

J'espère que les développeurs mql lisent cette page.

Quand ferez-vous un validateur normal ?

Il y a un bug dans le validateur pour mt4. Il est impossible d'obtenir des données sur les prix d'ouverture/fermeture, les bougies Hi/Low à partir d'autres horizons temporels.

 
A100:

Vous avez une erreur de syntaxe - donnez un exemple de code fonctionnel avec (typename) entre parenthèses. Vous pourriez aussi bien écrire (OnStart) entre parenthèses

Eh bien, il n'y a pas d'erreur de syntaxe

typename(J)

Mais considérez-vous déjà ce code comme une erreur de syntaxe ?

(typename)J

Un principe de conversion de type est censé fonctionner ici, et l'aide autorise les deux variantes.

Raison: