Hatalar, hatalar, sorular - sayfa 2735

 
Bir sorum var, şimdi ücretsiz sinyalleri nasıl bulabilirim? Bunları periyodik olarak manuel olarak buluyorum ve sinyaller sayfasında yalnızca ücretli olanlar var. Maliyet filtresi onları bulmanıza izin vermez.
 
Test cihazında seçilen bir Expert Advisor'a bağlı bir kitaplığın yeniden derlenmesi, bir sonraki başlatmada alınmasına yol açmaz. Test cihazında başka bir Uzman Danışman seçmeniz ve ardından bir öncekine geçmeniz gerekir. Ancak o zaman test eden kişi yeni kitaplığı alır. Tamamen görünmez hata.
 
Stanislav Korotky :
Test cihazında seçilen bir Expert Advisor'a bağlı bir kitaplığın yeniden derlenmesi, bir sonraki başlatmada alınmasına yol açmaz. Test cihazında başka bir Uzman Danışman seçmeniz ve ardından bir öncekine geçmeniz gerekir. Ancak o zaman test eden kişi yeni kitaplığı alır. Tamamen görünmez hata.

Kararlı sürümde de durum aynı...

 
Bir sınıf, bu sınıfı alan olarak kullanan bir sarmalayıcı sınıfa yönelik bir işaretçi içerdiğinde MT5 hatası (2407) derleme hatası.
C++ çevrimiçi: https://onlinegdb.com/SJN1shM58
 template < typename T>
class wrapper{
public :
   T data;
};

class B{
public :
   wrapper<B>* ptr;             // undefined class 'B' cannot be used
};


void OnStart (){  
   B b;
   b.ptr = new wrapper<B>();
   printf ( "%p" , b.ptr);
} 
 
Derleme sırasında hata:
 int i = f(); //Error: 'f' - undeclared identifier
void OnStart ()
{
}
int f() { return 0 ; }

ve bunun gibi:

 void OnStart ()
{
int i = f(); //нормально
}
int f() { return 0 ; }

iyi. Fark ne?

 
A100 :
Derleme sırasında hata:

ve bunun gibi:

bu yüzden ilk örneğinizi yazmanız gerekiyor - bu arada, ileriye dönük bir açıklama ile yapılar ve sınıflar için ileriye dönük bir açıklama da işe yarıyor

 int f( int );
int i = f( 5 );
void OnStart ()
{
   printf ( "i = %i" , i);
}
//+------------------------------------------------------------------+
int f( int v)
{
   return v * v;
}
//+------------------------------------------------------------------+

2020.05.10 17:23:27.704 tst1 (ETHUSD,M1) ben = 25

A100 :

iyi. Fark ne?

Sanırım yukarıdan aşağıya ayrıştıran ve sonunda en son ayrıştırılan derleyici OnStart()
 
Igor Makanu :
Sanırım yukarıdan aşağıya ayrıştıran ve sonunda en son ayrıştırılan derleyici OnStart()

Bu durumda, düşünmeye gerek yoktur - kurallar genel olmalıdır: işlevi bildirimden önce uygulamak mümkünse, mümkün değilse, hayır. Buna göre, her iki durumda da derlenmeli veya yapılmamalıdır.

 
A100 :

Bu durumda, düşünmeye gerek yoktur - kurallar genel olmalıdır: işlevi bildirimden önce uygulamak mümkünse, mümkün değilse, hayır. Buna göre, her iki durumda da derlenmeli veya yapılmamalıdır.

ne yazık ki burada dil özellikleri deniyor böyle yazabilirsiniz

 int f( int v)
{
   return v * v;
}
void OnStart ()
{
   printf ( "i = %i" , i);
}
//+------------------------------------------------------------------+
int i = f( 5 );
 
Igor Makanu :

ne yazık ki burada dil özellikleri deniyor böyle yazabilirsiniz

Tüm özellikler Belgelere yansıtılmıştır. Ordakini görmedim. Dolayısıyla sonuç: bu bir özellik değil, bir kusur

 
A100 :

Bu durumda, düşünmeye gerek yoktur - kurallar genel olmalıdır: işlevi bildirimden önce uygulamak mümkünse, mümkün değilse, hayır. Buna göre, her iki durumda da derlenmeli veya yapılmamalıdır.

Bu, bu tür diller için normal C davranışıdır.

Fonksiyonlar, ileri bildirim olmadan kullanılamaz. OnStart'tan gelen çağrı, küresel düzeyde doğrudan bir çağrıya kıyasla aslında ertelenmiş olarak derlenir.

C++'da aynı hatayı verecektir.