#define LPRINT_END , __FUNCSIG__ ); #define LPRINT gFactory.getCLogManager().doPrint (
ve ortada bir günlük mesajı var
LPRINT "abnormal situation, couldn't select position" , ENUM_LOG_LEAD_DEBUG
kapanmadan çıkıyor
LPRINT (FUNCSIG, "abnormal situation, couldn't select position" , ENUM_LOG_LEAD_DEBUG);
ya başlangıç (FUNCSIG, #define ve ardından sonunda kısa bir parantez koydu
Diyelim ki makroya __FUNCSIG__ ve ErrorLast eklemek istiyoruz. Bir makro çağrıldığında, koduyla birlikte satırda bir kapatma parantez olacaktır. Yani, evet, düşünce parladı, bunu bir şekilde iyileştirmek mümkün mü?
Soruma neden cevap verilmiyor?
Sadece makro kullanabilir misin? Elbette, eller iki parantez içine düşmedikçe.
#define LP(X) Print (X) void OnStart () { LP( "myMessage" ); }
Soruma neden cevap verilmiyor?
Sadece makro kullanabilir misin? Elbette, eller iki parantez içine düşmedikçe.
parametreleri okumalıydınız, evet)
Teşekkür ederim!
Genel olarak, bu şekilde çözülür:
#define LOG_S(dText) (SLog( __FUNCSIG__ , __FILE__ , __LINE__ ,dText)).Log() #define LOG_C(dText) CLog::Get().Log( __FUNCSIG__ , __FILE__ , __LINE__ ,dText) #define LOG_F(dText) Log( __FUNCSIG__ , __FILE__ , __LINE__ ,dText) struct SLog{ string cText; SLog( string mFunc, string mFile, int mLine, string mText): cText( StringFormat ( "%s, %s, line %i, %s" ,mFunc,mFile,mLine,mText)){} void Log() { Print (cText);} }; class CLog{ CLog(){} public : static CLog* Get(){ static CLog instance; return &instance;} void Log( string mFunc, string mFile, int mLine, string mText) { PrintFormat ( "%s, %s, line %i, %s" ,mFunc,mFile,mLine,mText);} }; void Log( string mFunc, string mFile, int mLine, string mText) { PrintFormat ( "%s, %s, line %i, %s" ,mFunc,mFile,mLine,mText);} void OnStart ( void ) { LOG_S( "struct" ); LOG_C( "class" ); LOG_F( "func" ); }
Üç seçenek: geçici bir nesne, bir tek ton, bir işlev, - kime, dinde daha yakın)))) Hız açısından, pratik olarak ayırt edilemezler.
#define LOG(dText) printf ( "%s, %s, line %i, %s" , __FUNCSIG__ , __FILE__ , __LINE__ ,dText); void OnStart ( void ){ LOG( "bezgovna" ); }Ancak, ne yazık ki, enayiler üzerinde bir izlenim bırakmayacaksınız.
Ancak, ne yazık ki, enayiler üzerinde bir izlenim bırakmayacaksınız.
Bu çözümü neden hemen bir kişiye göstermedin?)))
Bu çözümü neden hemen bir kişiye göstermedin?)))
Teşekkür ederim! )
Esasen.
Sınıflı bir varyantta da durdum. Günlük kullanım olmadan #define parametreleştirme gibi basit şeyler bile çabucak unutulur.
Sinirler tarafından.
Tanrım, burada herkes ne kadar savunmasız, alt metni olmadan, incitme veya rencide etme niyeti olmadan bir soru soruyorsun, ama hayır, tanınmayan bir dehanın ruhunda bir yerde, başka bir sevgili pahasına kendini gösterme arzusu karıncalanıyor ve eğlenceli. İngilizce forumda bununla karşılaşmıyorum, oraya düzenli olarak yazmama rağmen. Bunu fark ettiğimde, genellikle bu tür açıklamalara tepki vermemeye çalışırım, ancak Dmitry, sözlü bir savaşta eğlenmek istiyorsanız, o zaman sizi kendi yayılımlarınıza daldırarak size zevk vereceğim.

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Merhaba!
#define ayracı kapatmanın bir yolu var mı?