dış ve giriş arasındaki fark - sayfa 3

 
//+------------------------------------------------------------------+
//|                                                          inc.mqh |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"

extern int x;

int z(){
   x= 122 ;
   return x;

Uzman:

 //+------------------------------------------------------------------+
//|                                                          exp.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

int x= 1 ;

#include <inc.mqh>

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   Alert (x);
   Alert (z());   
   Alert (x);   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   
  }
//+------------------------------------------------------------------+
 
Dmitry Fedoseev :

Evet, bir kitaplığınız var. Elbette farklı değişkenler olacaktır. Bu, mqh'yi içerme yoluyla bağlamak anlamına gelir.

C++'da extern'ler bağlantılı kitaplıklarda tanımlanır, aksi takdirde derleyici projeyi derlemenize izin vermez.


Dmitry Fedoseev :

Uzman:

ve bunun ne anlamı var? Derlerken, oradaki girişi açıklamak istiyorsanız, içerme programın gövdesine eklenecektir - aynısı olacaktır.


bir seçenek olarak, bir sınıf veya yapıyı harici bir değiştiriciyle tanımlayın;)

 
Igor Makanu :

C++'da extern'ler bağlantılı kitaplıklarda tanımlanır, aksi takdirde derleyici projeyi derlemenize izin vermez.

Kitaplıkların içerdiği dosyaları "#include" yoluyla çağırmak muhtemelen gelenekseldir.

 
Igor Makanu :

...

ve bunun anlamı ne? Derlerken, oradaki girişi açıklamak istiyorsanız, içerme programın gövdesine eklenecektir - aynısı olacaktır.

Mesele şu ki, içerme dosyası üzerinde tüm projeden bağımsız olarak çalışabilir, ayrı olarak derleyebilir ve böylece hataları kontrol edebilirsiniz.

 
Dmitry Fedoseev :

Buradaki nokta, içerme dosyası üzerinde tüm projeden bağımsız olarak çalışabilmeniz, onu ayrı olarak derleyebilmeniz ve böylece hataları kontrol edebilmenizdir.

bence, basitçe var olmadığı yerde anlam arıyoruz

IMHO, daha önce yazılan binlerce kodun uyumluluğu için extern bırakılmış ve sertifika, Wiki'den bazı bilgileri kopyalayan bir kişi tarafından yazılmıştır.

 
Igor Makanu :

bence, basitçe var olmadığı yerde anlam arıyoruz

IMHO, daha önce yazılan binlerce kodun uyumluluğu için extern bırakılmış ve sertifika, Wiki'den bazı bilgileri kopyalayan bir kişi tarafından yazılmıştır.

Öyleyse Tanrı'nın hükmü nedir?) .mqh (#include) ile bir .mq5 programı yazarsam, extern'i güvenle reçete edebilir ve beklenmedik sonuçlardan korkmadan (mql4'te yaptığım gibi) veya yine de input kullanabilir miyim?
 
Maksim Neimerik :
Öyleyse Tanrı'nın hükmü nedir?) .mqh (#include) ile bir .mq5 programı yazarsam, extern'i güvenle reçete edebilir ve beklenmedik sonuçlardan korkmadan (mql4'te yaptığım gibi) veya yine de input kullanabilir miyim?

Hangi amaçlarla aranıyor. Farklı amaçları var.

 
Maksim Neimerik :
Öyleyse Tanrı'nın hükmü nedir?) .mqh (#include) ile bir .mq5 programı yazarsam, extern'i güvenle reçete edebilir ve beklenmedik sonuçlardan korkmadan (mql4'te yaptığım gibi) veya yine de input kullanabilir miyim?

MQL programlarının standart yapılarını kullanın: kodun başında, tümü girdi , ardından tümü dahil edildi - geliştiricilerden örnekler bu şekilde yazılır, kod tabanındaki kodların %99'u bu şekilde yazılır ve sürpriz olmaz

extern hakkında bir kez daha tekrarlıyorum - program yürütme sırasında değiştirilebilirler, ancak bence bu kötü bir uygulamadır, genellikle OnInit () içindeki tüm harici değişkenler değişkenlerine kopyalanır ve onlarla birlikte çalışırlar (örnek olarak, 4. işaret ve 5 işaret altında çalışın - vagon ağındaki bu tasarımın örnekleri)


ve son olarak - eski kodu değiştirirseniz extern kullanmayın, ardından bunu input ile değiştirin ve derleyici extern'de bir giriş varsa uyarılarla size yardımcı olacaktır - bunun düzeltilmesi gerekiyor

 

Bu arada, burada derleyicinin, numaralandırmanın içeriğini bir değişken olarak yeniden bildirebilmemi umursamadığını öğrendim.

 enum mode5
{
   Manual         = 0 , // Standard in Pips
   Kijun_sen      = 1 // Stoploss +/- Kijun-sen
};

//а потом где угодно можно объявить и компилятору будет пофиг

string Kijun_sen = "Да мне вообще пофиг что ты там объявил" ;      
 
Aleksey Semenov :

Bu arada, burada derleyicinin enum enum içeriğini bir değişken olarak yeniden bildirebilmemi umursamadığını öğrendim.

ve enum türünde bir değişken bildirirseniz?

 enum mode5
{
   Manual         = 0 , // Standard in Pips
   Kijun_sen      = 1 // Stoploss +/- Kijun-sen
};


string Kijun_sen = "Да мне вообще пофиг что ты там объявил" ; 

void OnStart ()
  {
      mode5 x = Kijun_sen;
   
  }
//+------------------------------------------------------------------+

örtük numaralandırma dönüştürme tst1.mq5 24 17


EnumToString()'i de kontrol edebilirsiniz...


Bildirilen değişkenleri olmayan türün, kullanılmadığı için derlemeden atıldığını düşünüyorum.