Hatalar, hatalar, sorular - sayfa 312

 
Academic :

ObjectGetDouble işlevine bir başvuru iletildiğinden ve if ifadesinde her iki çağrı tarafından döndürülenlerin doğruluğu kontrol edildiğinden bu uyarı verilmemelidir ve bu nedenle yalnızca her iki işlev de doğru döndürülürse, bu değişkenlerle çalışma gerçekleştirilir, bu da bu değişkenlerin her ikisinin de doğru anlama ayarlanamayacağı anlamına gelir.


Derleyici, bu değişkenlerin ObjectGetDouble çağrısının bir sonucu olarak başlatılacağından emin olmak için zihnini yeterince genişletmez. Bunun yerine kendinizinkini yazmaya çalışın, burada referansla geçirilen giriş parametresinin değeri açıkça belirlenir. Derleyici ne diyecek?
 
Rosh :
Derleyici, bu değişkenlerin ObjectGetDouble çağrısının bir sonucu olarak başlatılacağından emin olmak için zihnini yeterince genişletmez. Bunun yerine kendinizinkini yazmaya çalışın, burada referansla geçirilen giriş parametresinin değeri açıkça belirlenir. Derleyici ne diyecek?


Rashid, aslında bu "bilinç" değil, matematik.

 
Academic :


Rashid, aslında bu "bilinç" değil, matematik.

1. " Mantıksal ifadelerin kısaltılmış değerlendirmesi" diye bir şey var.

2. Derleyici, referansla geçirilen bir değişkenin doldurulup doldurulmayacağını kesin olarak bilemez.

3. Bir sorun olasılığına dikkatinizi çekmek için bir uyarı ve uyarı.

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип bool - Документация по MQL5
 
Academic :


Rashid, aslında bu "bilinç" değil, matematik.

Tamam, böyle bir fonksiyon tanımlayalım

 bool AlwaysGood( double & param)
  {
   return true ;
  }
Param değişkeninin başlatılacağının garantisi var mı?
 
Rosh :

Tamam, böyle bir fonksiyon tanımlayalım

Param değişkeninin başlatılacağının garantisi var mı?

Bu, "param" sonucunun KESİNLİKLE DEĞİŞMEYEN bir fonksiyondur. Yani burada uyarı %1000 verilmelidir :)

Buradaki standart çözümün özü şudur - değerin değiştirilemeyeceği bir kod yürütme dalı varsa, bu fonksiyonun değeri değiştirmediği kabul edilir. Ve bir uyarı verin.

Rashid, istersen modern C++ ve C derleyicilerinden herhangi birini alıp bunun gibi kod derleyeceğim ve eminim hiçbiri sol uyarı vermeyecektir.

Bu açıkça bir iyileştirme değildir, özellikle de bu tür şeylerin saptanmasıyla ilgili bu tür "sorunlar" varsa, o zaman hiçbir optimizasyon olmadığı konusunda BÜYÜK bir şüphe sürünür. Yoksa var mı?

 
Academic :

Rashid, istersen modern C++ ve C derleyicilerinden herhangi birini alıp bunun gibi kod derleyeceğim ve eminim hiçbiri sol uyarı vermeyecektir.

Ne hakkında tartışıyoruz? w0 ayarlama

PS Mesaj kesinlikle olacaktır (belki birkaç satır aşağıda)

 
Academic :

Bu açıkça bir iyileştirme değildir, özellikle de bu tür şeylerin saptanmasıyla ilgili bu tür "sorunlar" varsa, o zaman hiçbir optimizasyon olmadığı konusunda BÜYÜK bir şüphe sürünür. Yoksa var mı?

ObjectGetDouble işlevi, bağımsız bir (yani kitaplık) uygulamasına sahip olduğu için derleyicinin kontrolü altında değildir.
Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
Графические объекты / ObjectGetDouble - Документация по MQL5
 
Academic :


ObjectGetDouble'daki yardıma bakarsanız:


İşlevin başarısına bağlı olarak doğru veya yanlış döndürür. Başarılı olursa , özellik değeri, son parametre olarak referans tarafından geçirilen alıcı değişkene yerleştirilir.


Bundan, belirli bir hata durumunda alıcı değişkenin doldurulmasının garanti edilmediği sonucuna varıyoruz. Yani derleyicinin mesajı geçerlidir.

BENİM NACİZANE FİKRİME GÖRE.

 

Son derlemede bir şeyler senkronize değildi.

Küçük bir danışman yapıyorum:

 int OnInit ()
  {
   Print ( "Все нормально!" ); 
   return ( 0 );
  }

test cihazını çalıştırıyorum

2011.02.22 11:54:21 çekirdek 1 2011.02.07 00:00:00 Her şey yolunda!

Danışmanda değişiklikler yapıyorum:

 int OnInit ()
  {
   Print ( "Тестер, Аууу, ты где?" ); 
   return ( 0 );
  }

Derliyorum, test cihazını çalıştırıyorum - yanıtlıyor:

2011.02.22 11:57:55 çekirdek 1 2011.02.07 00:00:00 Her şey yolunda!

Yalnızca terminali yeniden başlatmak yardımcı olur.

 
Serj_Che :

Son derlemede bir şeyler senkronize değildi.

Küçük bir danışman yapıyorum:

test cihazını çalıştırıyorum

2011.02.22 11:54:21 çekirdek 1 2011.02.07 00:00:00 Her şey yolunda!

Danışmanda değişiklikler yapıyorum:

Derliyorum, test cihazını çalıştırıyorum - yanıtlıyor:

2011.02.22 11:57:55 çekirdek 1 2011.02.07 00:00:00 Her şey yolunda!

Yalnızca terminali yeniden başlatmak yardımcı olur.

Afedersiniz. Bugün veya yarın, bu can sıkıcı hata olmadan yeni bir yapı yayınlanacak.