Hatalar, hatalar, sorular - sayfa 1768
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bu sadece aptal bir derleyicide mümkündür. Sen kendin her şeyi anlıyorsun.
using namespace std;
struct S
{
S operator +( const S&) {cout << "operator +\n" ; return S{};}
};
S operator "" _s( const char *, size_t) {cout << "literal operator\n" ; return S{};}
int main()
{
cout << "___literal concatenation example___\n" ;
S s = "sd" _s "sf" _s;
cout << "___operator+ example___\n" ;
S s2 = "sd" _s + "sf" _s;
}
___değişmez birleştirme örneği___
gerçek operatör
___operatör + örnek___
gerçek operatör
gerçek operatör
operatör +
Gördüğünüz gibi, ikinci durumda + operatörü yapıştırma ile değiştirilmedi (bir değişmez için oluşturuldu, ardından çalışma süresi eklenmesi). Derleyici basitçe kesemez çünkü programcının çok fazla olasılığı vardır, bu da optimizasyon olasılıklarını büyük ölçüde sınırlar. Bu bir ML değil, elbette, içinde her şey farklı olabilir, ancak "normal bir derleyici benim için her şeyi yapacak" ifadesinin kendisi hatalı.Bu bir ML değil, elbette, içinde her şey farklı olabilir, ancak "normal bir derleyici benim için her şeyi yapacak" ifadesinin kendisi hatalı.
Zamanı ve parayı boşa harcamakta tereddüt ettim: optimize edici son geçişte donuyor. Temsilciler hiçbir şey yapmaz, her şey Yetkili aşamasındadır. Dergide sessizlik. Aracıları etkinleştirmek/devre dışı bırakmak anlamsızdır , optimizasyonu yeniden başlattıktan sonra her şey sıfırdan başlar.
Kim karşı karşıya geldi? Nasıl savaşılır?
sihirli dize
1024x768 ekran çözünürlüğüne sahip MetaEditor\1495'teki eylemlerin sırası:
- Ekli dosyayı aç
- Yatay kaydırma kaydırıcısını tamamen sağa hareket ettirin (şekilde olduğu gibi)
- 3. satırda fare ile / * 12345 * / parçasını seçin
Ek ayarlar: Araçlar\Ayarlar\Genel\Sekme 4 karakterStringToInteger() işlevini kullanarak bir dizeyi sayıya dönüştürmeye çalışırken, dize bir sayı içermiyorsa, hatasız olarak 0 döndürülür (GetLastError() = 0). Giriş parametrelerinde bir dize sunulursa ve kullanıcı değerleri yanlış belirtirse, işlev yanlış bir değer döndürür ve hata oluşturmaz. Bu kötü.
Ayrıca, dize bir sayının yanlış bir temsilini içeriyorsa, örneğin 5o (50 yerine) - işlev yine hata vermeden 5 değerini döndürür. Ve burada, sadece 0 değil, aynı zamanda fonksiyon dizgiyi 5 olarak ayrıştırdı, ki bu yine doğru değil.
Sevgili geliştiriciler, lütfen hata kodları ekleyerek veya ayrıştırma imkansızsa, neyin yanlış olduğunu belirleyebilmeniz için LONG_MAX değeri + bir hata döndürerek işlevi iyileştirin. Şimdi bunu yapmak imkansız.
Komut dosyası kodunu kontrol edin:
#property script_show_inputs
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
input string value= "05" ;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart ()
{
const long iValue= StringToInteger (value);
Print ( "iValue = " ,iValue, ", lastError = " , GetLastError ());
}
//+------------------------------------------------------------------+
İşlev sürümünüzü uygulayın - 10 dakikadan fazla sürmez.
Sistem işlevlerinin davranışını değiştirmeyeceğiz.
İşlev sürümünüzü uygulayın - 10 dakikadan fazla sürmez.
Sistem işlevlerinin davranışını değiştirmeyeceğiz.
Onlar. İşlevleri, özellikle de açıkça yalan söyleyebilen işlevleri iyileştirmenin gerekli olduğunu düşünmüyor musunuz?
Hata kodları ekleseler bile zaten iyi olurdu, yoksa tekerleği yeniden icat etmeyi önerirsiniz. Tabii ki zor değil, ama bir bisiklet.
Onlar. İşlevleri, özellikle de açıkça yalan söyleyebilen işlevleri iyileştirmenin gerekli olduğunu düşünmüyor musunuz?
Hata kodları ekleseler bile zaten iyi olurdu, yoksa tekerleği yeniden icat etmeyi önerirsiniz. Tabii ki zor değil, ama bir bisiklet.
Derlerken hata
struct S {};