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

 

Genel olarak, global değişkenlerin kötü olduğu gerçeğiyle başlamalıyız. Ve böyle bir değişken birçok dosyada kullanıldığında ve herhangi bir yerden değiştirilebildiğinde, bu meydanda kötülüktür! Bu nedenle, bu tür değişkenler her zaman sabit olarak bildirilmelidir (algoritmanın mantığını etkilemeyen hata ayıklama amacıyla yardımcı değişkenlerden bahsetmiyorsak).

Yani, eğer sabit bir global değişkenimiz varsa, o zaman bariz sonuç kendini gösterir: sonunda ona birkaç parantez eklemek, onu bir fonksiyona dönüştürmek ve böylece bunun için herhangi bir uygulamayı belirlemede esneklik kazanmak daha kolay değil mi? işlev. Ve yukarıda yazdığım MQL'deki dış değişkenlerin kusurlu olduğu göz önüne alındığında, alternatifimiz yok.
 
Proje birkaç mq5 dosyasından oluşuyorsa (mqh ile karıştırılmamalıdır) extern belirteci gereklidir. Bu durumda, global değişkenleri ayrı bir dosyada bildirmek mantıklıdır. Proje mqh'den oluşuyorsa ve #include üzerine kuruluysa, o zaman extern gerekli değildir, çünkü aslında bu birkaç dosyaya bölünmüş bir dosyadır.
 
Vladimir Simakov :
Proje birkaç mq5 dosyasından oluşuyorsa (mqh ile karıştırılmamalıdır) extern belirteci gereklidir. Bu durumda, global değişkenleri ayrı bir dosyada bildirmek mantıklıdır. Proje mqh'den oluşuyorsa ve #include üzerine kuruluysa, o zaman extern gerekli değildir, çünkü aslında bu birkaç dosyaya bölünmüş bir dosyadır.

bir örnek gerekli, kütüphanelerde extern kullanmayı denedim - çalışmıyor https://www.mql5.com/en/forum/316795/page2#comment_12259472

 
Igor Makanu :

bir örnek gerekli, kütüphanelerde extern kullanmayı denedim - çalışmıyor https://www.mql5.com/en/forum/316795/page2#comment_12259472

Kütüphaneler için değil, projeler içindir. Proje, #include üzerine inşa edilebilir veya birkaç mq5 dosyası oluşturulabilir. Burada, ikinci durumda, global değişkenleri farklı dosyaların kapsamına sokmak için extern gereklidir.
 
Vladimir Simakov :
Burada, ikinci durumda, global değişkenleri farklı dosyaların kapsamına sokmak için extern gereklidir.

Kusura bakmayın ama bir örneğe ihtiyacım var, burada extern'i nerede kullanacağınızı tahmin edebilirsiniz - kütüphanede denedim, benim için işe yaramadı, extern'i nasıl kullandığınızı gösterin

 
Vladimir Simakov :
Kütüphaneler için değil, projeler içindir. Proje, #include üzerine inşa edilebilir veya birkaç mq5 dosyası oluşturulabilir. Burada, ikinci durumda, global değişkenleri farklı dosyaların kapsamına sokmak için extern gereklidir.
Kapsama nasıl girilir? projedeki mq5 dosyalarının her biri kendi başınadır, hiçbir şekilde bağlantılı değildirler. Her dosya bağımsız olarak derlenir, değil mi?
 
Bütün şaka, extern'in basitçe gerekli olmamasıydı. Herhangi bir proje dosyasında global düzeyde bildirilen bir değişken, tüm dosyalarında mevcuttur. Ne için? Yaratıcılara soru.
 
Vladimir Simakov :
Bütün şaka, extern'in basitçe gerekli olmamasıydı. Herhangi bir proje dosyasında global düzeyde bildirilen bir değişken, tüm dosyalarında mevcuttur. Ne için? Yaratıcılara soru.

Kullanıldığı tüm *.mqh dosyalarında extern değişkenini bildirebilirsiniz.

Bu durumda, bu tür *.mqh dosyaları, global değişkenin bildirildiği *.mq5 (veya diğer *.mqh) dosyasına bağlı değildir.
Bu, dosyaların başka projelerde kullanılmasına izin vererek kodun yeniden kullanımını artırır.

 
Ilyas :

Kullanıldığı tüm *.mqh dosyalarında extern değişkenini bildirebilirsiniz.

Bu durumda, bu tür *.mqh dosyaları, global değişkenin bildirildiği *.mq5 (veya diğer *.mqh) dosyasına bağlı değildir.
Bu, dosyaların başka projelerde kullanılmasına izin vererek kodun yeniden kullanımını artırır.

Teşekkürler, şimdi mantığı anladım. Başlangıçta C++'daki extern ile aynı olduğunu düşündüm.
 
Vladimir Simakov :
Teşekkürler, şimdi mantığı anladım. Başlangıçta C++'daki extern ile aynı olduğunu düşündüm.

benzer değil mi