La différence entre extern et input - page 6

 

En général, nous devrions commencer par le fait que les variables globales sont diaboliques, et quand une telle variable est utilisée dans de nombreux fichiers et peut être modifiée de n'importe où, alors c'est le mal au carré ! Par conséquent, de telles variables devraient toujours être déclarées comme constantes (à moins que nous ne parlions de variables auxiliaires à des fins de débogage, qui n'affectent pas la logique de l'algorithme).

Donc, si nous avons une variable globale constante, alors nous avons une conclusion évidente : n'est-il pas plus facile d'ajouter des parenthèses à la fin et d'en faire une fonction, et donc d'avoir la flexibilité de définir n'importe quelle implémentation pour cette fonction. Et en tenant compte du fait que les variables externes dans MQL sont sous-développées, comme je l'ai écrit ci-dessus, nous n'avons pas d'autres alternatives.
 
Le spécificateur extern est nécessaire si le projet est composé de plusieurs fichiers mq5 (à ne pas confondre avec mqh). Dans ce cas, il est judicieux de déclarer les variables globales dans un fichier distinct. Si le projet consiste en mqh et est construit en utilisant #include, extern n'est pas nécessaire, car il s'agit d'un fichier divisé en plusieurs fichiers.
 
Vladimir Simakov:
Le spécificateur extern est nécessaire si le projet est composé de plusieurs fichiers mq5 (à ne pas confondre avec mqh). Dans ce cas, il est judicieux de déclarer les variables globales dans un fichier distinct. Si le projet consiste en mqh et est construit en utilisant #include, extern n'est pas nécessaire puisqu'il s'agit d'un fichier divisé en plusieurs fichiers.

L'exemple est nécessaire, j'ai essayé d'utiliser extern dans les bibliothèques - cela ne fonctionne pashttps://www.mql5.com/ru/forum/316795/page2#comment_12259472

 
Igor Makanu:

L'exemple est nécessaire, j'ai essayé d'utiliser extern dans les bibliothèques - cela ne fonctionne pashttps://www.mql5.com/ru/forum/316795/page2#comment_12259472

Ce n'est pas pour les bibliothèques, c'est pour les projets. Le projet peut être construit soit sur #include ou faire plusieurs fichiers mq5. Dans le second cas, extern est nécessaire pour introduire des variables globales dans la portée de différents fichiers.
 
Vladimir Simakov:
Ici, dans le second cas, vous avez besoin d'extern, qui introduirait les variables globales dans la portée de différents fichiers.

Cela ne me dérange pas, mais j'ai besoin d'un exemple, ici vous pouvez deviner où utiliser extern - j'ai essayé dans la bibliothèque, cela n'a pas fonctionné, montrez-moi comment vous utilisez extern

 
Vladimir Simakov:
Ce n'est pas pour les bibliothèques, mais pour les projets. Le projet peut être construit soit sur #include ou faire plusieurs fichiers mq5. Dans le second cas, extern est nécessaire pour introduire des variables globales dans la portée de différents fichiers.
Comment exactement entrer des variables dans la portée ? mq5-les fichiers d'un projet sont indépendants, ils ne sont reliés d'aucune façon. La compilation de chaque fichier est indépendante, n'est-ce pas ?
 
Le fait est qu'extern s'est avéré tout simplement inutile. Une variable déclarée globalement dans un fichier du projet est disponible dans tous ses fichiers. Mais pourquoi ? Question pour les créateurs.
 
Vladimir Simakov:
Le fait est qu'extern s'est avéré tout simplement inutile. Une variable déclarée globalement dans un fichier du projet est disponible dans tous ses fichiers. Mais pourquoi ? Question pour les créateurs.

Vous pouvez déclarer une variable externe dans tous les fichiers *.mqh, dans lesquels elle est utilisée.

Ensuite, ces fichiers *.mqh ne dépendent pas du fichier *.mq5 (ou d'un autre fichier *.mqh), dans lequel la variable globale est déclarée.
Cela vous permet d'utiliser les fichiers dans d'autres projets, ce qui augmente la réutilisation du code.

 
Ilyas:

Vous pouvez déclarer la variable extern dans tous les fichiers *.mqh, dans lesquels elle est utilisée.

Ensuite, ces fichiers *.mqh ne dépendent pas du fichier *.mq5 (ou autre *.mqh), dans lequel la variable globale est déclarée.
Cela vous permet d'utiliser les fichiers dans d'autres projets, ce qui augmente la réutilisation du code.

Merci, maintenant je comprends la logique. Au départ, je pensais que c'était similaire à extern en C++.
 
Vladimir Simakov:
Merci, maintenant je comprends la logique. Au départ, je pensais que c'était similaire à extern en C++.

N'est-ce pas similaire ?

Raison: