Hatalar, hatalar, sorular - sayfa 1003

 
stringo :

ts==true ve ts!=NULL tamamen farklı ifadelerdir.

Üstelik

ts==true ve ts!=false da farklı ifadelerdir

Nasıl farklı olduklarını biliyor musun? Yalnızca söz diziminde değil, anlambilimde de

Sadece meselenin özü, ts'nin bir dizi olmasıydı. Ve neden bu if(ts) derlenir ve yukarıdakiler derlenmez.
 
sion :
Sadece meselenin özü, ts'nin bir dizi olmasıydı. Ve neden bu if(ts) derlenir ve yukarıdakiler derlenmez.

if(ts) ifadesi, ts dizi nesnesinin gerçekten var olduğu anlamına gelir. Özellikle semantik hakkında konuştum.

Bu vakanın derlenmesini engellemek mi istiyorsunuz yoksa bir uyarı yeterli mi? (Bu arada bir uyarı olması lazım. Yok ise bu bizim kusurumuzdur, bir şeyler kopmuştur)

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

dizi , 2013.06.17 06:35

if(ts) ifadesi, ts dizi nesnesinin gerçekten var olduğu anlamına gelir. Özellikle semantik hakkında konuştum.

Bu vakanın derlenmesini engellemek mi istiyorsunuz yoksa bir uyarı yeterli mi? (Bu arada bir uyarı olması lazım. Yok ise bu bizim kusurumuzdur, bir şeyler kopmuştur)


int ts[20];

void OnInit()
{
ts[0]=0;ts[1]=1;
if(ts)Print("ts[0]=0");
ts[0]=1;
if(ts)Print("ts[0]=1");
}

void OnTick()
{

}

2013.06.17 08:41:31 test_forum (EURUSD.e,M15) ts[0]=1
Dizinin ilk hücresinde çalışıyor gibi görünüyor.
 
#import "Test.ex5"
   void A();
#import "5Test.ex5"
   void A();
#import "Test5.ex5"
   void A();
#import

void B() { Test::A(); } //нормально
void C() { Test5::A(); } //нормально
void D() { 5 Test::A(); } //ошибка компиляции

ServiceDesk, tanımlayıcıların bir sayı ile başlayamayacağı gerçeğine atıfta bulunarak hatayı tanımıyor.

Ancak 5Test bir tanımlayıcı değil, bir dosya adıdır. Dosya adları bir sayı ile başlayabilir ve #import .ex5 dosya adlarında herhangi bir kısıtlama yoktu.

 
A100 :

ServiceDesk, tanımlayıcıların bir sayı ile başlayamayacağı gerçeğine atıfta bulunarak hatayı tanımıyor.

Ancak 5Test bir tanımlayıcı değil, bir dosya adıdır. Dosya adları bir sayı ile başlayabilir ve #import .ex5 dosya adlarında herhangi bir kısıtlama yoktu.

5Test::A - en fazla ikisi de tanımlayıcı değildir.

Ve 5Test dosya adı, bu ad import yan tümcesinde tırnak içine alındığı sürece tanınır (bu arada, orada "5Test .ex5 " yazdınız)

 
Bu nedenle C/C++ derleyicileri, bir dosya/modüldeki bir işlev adının dahili temsiline otomatik olarak bir alt çizgi karakteri (_) ekler, böylece "_5TestA" son adı bir sayı ile başlamaz, bu da uyumluluk sağlar.
 
A100 :
Bu nedenle C/C++ derleyicileri, bir dosya/modüldeki bir işlev adının dahili temsiline otomatik olarak bir alt çizgi karakteri (_) ekler, böylece "_5TestA" son adı bir sayı ile başlamaz, bu da uyumluluk sağlar.

Nasıl olduysa öyle oldu. Sakinleşmelisin.

Bu noktada düzenleme yapmak tehlikelidir - derleyicinin davranışı, kimsenin sevinemeyeceği şekilde değiştirilebilir.

 
stringo :

Bu noktada düzenleme yapmak tehlikelidir - derleyicinin davranışı, kimsenin sevinemeyeceği şekilde değiştirilebilir.

Kabul ediyorum.

Lütfen şu örneğe bakın:

 #define aX( X ) (X)
void K()
{
         int aX = 10 ;
         Print ( aX( 5 ) );
         Print ( aX ); 
}
// ошибка компиляции

Benzer bir durumda C/C++ derleyicisi, aX değişkenini aX( X ) parametrik makrosundan ayırt edecek kadar akıllıdır.

Satır içi işlevlerin yokluğunda, parametrik makrolar tek alternatiftir ve adlar genellikle büyük kodlarda çakışabilir.

 
A100 :

Kabul ediyorum.

Lütfen şu örneğe bakın:

Benzer bir durumda C/C++ derleyicisi, aX değişkenini aX( X ) parametrik makrosundan ayırt edecek kadar akıllıdır.
Terapiste! (servis masasına)
 
Rosh :

Tabii ki, daha geçen gün örnekler yayınladılar:

  1. Demo_IndicatorSetTamsayı
  2. Demo_IndicatorSetÇift
  3. Demo_IndicatorSetString

Teşekkür ederim! Yardımınızla anlaşıldı.