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

 
Alexey Navoykov :

Bu başlatmaların farklı içerme dosyalarında yapıldığını hayal edin. Daha sonra nihai sonuç, bu dosyaların dahil edildiği sıraya bağlı olacaktır.

iyi, bu harici ile bu kadar bariz hatalar bile

bu yüzden bunların hiçbir anlamı olmadığını yazıyorum, sadece eski kodlarla uyumluluk için - extern'i girdi ile değiştirdiğini ve hataları düzelttiğini gördüm ... aksi halde yardımda yazıyor ... belirsiz bir amaç ... . extern'de hiçbir anlamı yok - nasıl Arama yapmayın

 
Alexey Navoykov :

MQL5'te harici değişkenlerin uygulanması maalesef tamamlanmadı ve bu nedenle kullanılmasını önermiyorum, sorunlarla dolu. Bu değişkenlerin zorunlu bir kerelik başlatılması üzerinde kontrol eksikliğinden bahsediyoruz.

Örneğin, şöyle yazabilirsiniz:

ve hata olmayacak. Bu başlatmaların farklı içerme dosyalarında yapıldığını hayal edin. Daha sonra nihai sonuç, bu dosyaların dahil edildiği sıraya bağlı olacaktır.

Veya bunun gibi (yürütülebilir dosya):

burada extern değişkenini hiç başlatmadık, ancak hata da yok.

Buna göre, aynı değişkenlerin başka dosyalarda tanımlanıp tanımlanmadığı konusunda herhangi bir kontrol yoktur. Adını yanlışlıkla değiştirebilirsiniz, ancak diğer dosyalarda farklı bir ada sahip bir değişkenimiz olmasına rağmen, program hiçbir şey olmamış gibi derlenecektir.

Genel olarak, bu iyi değil. Bu nedenle, harici değişkenler yerine işlevleri kullanmak daha iyidir. Sadece bir tanım garanti edilir, ne daha fazla ne daha az.

Bu yaklaşımla, hiç bilgisayar kullanmamalısınız. Çünkü gözlerini kapatırsan, klapeyi dürter - çöp alırsın.

Extern ile ilgili asıl sorun, girdiden extern yapmaya çalıştığınız zamandır. Detayları hatırlamıyorum, çok uzun zaman önceydi. Sonuç olarak, extern'i tamamen terk ettim, içerme dosyasında basit bir değişken bildirdim ve .

 
Igor Makanu :

iyi, bu harici ile bu kadar bariz hatalar bile

bu yüzden bunların hiçbir anlamı olmadığını yazıyorum, sadece eski kodlarla uyumluluk için - extern'i girdi ile değiştirdiğini ve hataları düzelttiğini gördüm ... aksi halde yardımda yazıyor ... belirsiz bir amaç ... . extern'de hiçbir anlamı yok - nasıl Arama yapmayın

Mantıklı. MT5'te, harici içerme dosyalarında bu hiç girilmez.

 
Dmitry Fedoseev :

Mantıklı. MT5'te, harici içerme dosyalarında bu hiç girilmez.

Dahil etme dosyalarına neden girdiler ekleyelim?

Program yazmanın modern dünyasında neler olup bittiğini bilmiyorum, ama prosedürel bir tarzda yazmayı öğrendim, sonra OOP kullanmaya başladım, ilkinde, ikinci tarzda her mantıksal bloğun olması gerektiği ima ediliyor. başka bir programa aktarıldığında tamamen işlevseldir, t .e. bir fonksiyon yazdı - açıklamasında kullandığı tüm parametrelere sahip (başlıkta) - girdilere ihtiyacı yok - bu fonksiyonu kesip başka bir dosyaya yapıştırdı, olduğu gibi "taşındı" - ayrıca sınıflarla.

Ve girdilerin kendileri sadece bir kullanıcı arayüzü oluşturmalı, her zaman ana dosyada tanımlanmalıdır.


Eklenen IMHO dosyasında extern kullanımı, izlenmesi zor bir hata elde etmenin bir yoludur, @Alexey Navoykov yukarıda bunun nasıl olduğunu gösterdi, ne yazık ki tüm programcılar için değişken adlarının yarısından fazlası aynı adlara sahip harfe göre, maksimum fark, MagicNumber veya Magic örneği olarak büyük / küçük harflerin kullanımındadır - KB'ye bakarsanız, birinden sonra bu tür değişkenler olacaktır ve yönteminizde bir tehdit vardır. Değişkeninizde "gölge" extern, artık çok az kişi extern kullanıyor

 
Igor Makanu :

Dahil etme dosyalarına neden girdiler ekleyelim?

Program yazmanın modern dünyasında neler olup bittiğini bilmiyorum, ama prosedürel bir tarzda yazmayı öğrendim, sonra OOP kullanmaya başladım, ilkinde, ikinci tarzda her mantıksal bloğun olması gerektiği ima ediliyor. başka bir programa aktarıldığında tamamen işlevseldir, t .e. bir fonksiyon yazdı - açıklamasında kullandığı tüm parametrelere sahip (başlıkta) - girdilere ihtiyacı yok - bu fonksiyonu kesip başka bir dosyaya yapıştırdı, olduğu gibi "taşındı" - ayrıca sınıflarla.

Ve girdilerin kendileri sadece bir kullanıcı arayüzü oluşturmalı, her zaman ana dosyada tanımlanmalıdır.

Bu taraftan değil. Dosyaları dahil etmek için externs ekleyin. Dahil edilen dosyada ana dosyada belirtilen girdileri kullanabilmek için.

Bu arada, buna ihtiyaç, dahil edilen dosyaları kullanmaya başladığınız anda ortaya çıkıyor.

 
Dmitry Fedoseev :

Bu taraftan değil. Dosyaları dahil etmek için externs ekleyin. Dahil edilen dosyada ana dosyada belirtilen girdileri kullanabilmek için.

Bu arada, buna ihtiyaç, dahil edilen dosyaları kullanmaya başladığınız anda ortaya çıkıyor.

extern kullanmanın uygunluğuna bir örnek verin

 
Igor Makanu :

extern kullanmanın uygunluğuna bir örnek verin

uzun zamandır burada

 
Dmitry Fedoseev :

Bu yaklaşımla, hiç bilgisayar kullanmamalısınız. Çünkü gözlerini kapatırsan, klapeyi dürter - çöp alırsın.

Çöp, elbette ortaya çıkacak, ancak bunun derlenmesi pek mümkün değil. Derleyicinin görevi ayrıca bir saçmalık derlememektir. Ve mevcut durumda, bu görevle başa çıkmıyor.
 
Dmitry Fedoseev :

uzun zamandır burada

işte ben bundan bahsediyordum

Örneğiniz gizli bugların yaratılması, x değişken ismi sıklıkla kullanılıyor....Yukarıda yazdım.

IMHO şöyle görünmeliydi:

 extern int x;

int z()
  {
   static int x;
   x= 122 ;
   return x;
  }
 
Igor Makanu :

işte ben bundan bahsediyordum

Örneğiniz gizli bugların yaratılması, x değişken ismi sıklıkla kullanılıyor....Yukarıda yazdım.

IMHO şöyle görünmeliydi:

gitmeyecek. x değişkeni yalnızca bir işlevde değil, tümünde kullanılabilir olmalıdır. Ve dahası - hem ana dosyada hem de tüm bağlı dosyalarda mevcut olmalıdır.