Was soll das bringen? Sie brauchen also keine Klammern zu setzen? Ist das ein großes Problem?
#define LPRINT_END , __FUNCSIG__); #define LPRINT gFactory.getCLogManager().doPrint (
und in der Mitte steht eine Protokollmeldung
LPRINT "abnormal situation, couldn't select position", ENUM_LOG_LEAD_DEBUG
ohne die Schließung.
LPRINT (FUNCSIG, "abnormal situation, couldn't select position", ENUM_LOG_LEAD_DEBUG);
entweder am Anfang (FUNCSIG bis #define und dann eine Klammer am Ende
Was soll das bringen? Sie müssen also keine Klammern schreiben, wenn Sie das Makro aufrufen?
Nehmen wir an, wir wollen __FUNCSIG__ und ErrorLast zu einem Makro hinzufügen. Wenn das Makro aufgerufen wird, steht eine schließende Klammer in der Zeile mit seinem Code. Also, ja, ein Gedanke blitzte auf, gibt es eine Möglichkeit, dies zu verbessern
Nehmen wir an, wir wollen __FUNCSIG__ und ErrorLast zu einem Makro hinzufügen. Wenn das Makro aufgerufen wird, steht eine schließende Klammer in der Zeile mit seinem Code. Also, ja, ein Gedanke blitzte auf, gibt es eine Möglichkeit, dies zu verbessern
Gibt es keine Möglichkeit, meine Frage zu beantworten?
Vielleicht einfach Makros normal verwenden? Es sei denn, Ihnen fallen zwei Klammern aus der Hand.
#define LP(X) Print(X) void OnStart() { LP("myMessage"); }
Gibt es keine Möglichkeit, meine Frage zu beantworten?
Können Sie nicht einfach Makros richtig verwenden? Es sei denn, Ihnen fallen zwei Klammern aus der Hand.
Ich hätte mich über Parameter informieren sollen, ja )
Ich danke Ihnen!
Im Allgemeinen wird das Problem so gelöst:
#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"); }
Drei Optionen: temporäres Objekt, Einzelnes, Funktion - je nachdem, was religiöser ist). In Bezug auf die Geschwindigkeit sind sie praktisch nicht voneinander zu unterscheiden.
#define LOG(dText) printf("%s, %s, line %i, %s",__FUNCSIG__,__FILE__,__LINE__,dText); void OnStart(void){ LOG("bezgovna"); }Aber leider werden Sie die Trottel nicht beeindrucken.
Aber leider beeindruckt man keine Dummköpfe.
Warum haben Sie dem Mann diese Lösung nicht gleich gezeigt?)
Warum haben Sie dem Mann diese Lösung nicht gleich gezeigt?)
Ich danke Ihnen! )
Im Wesentlichen.
Ich bin mit der Klasse bei der Variante stehen geblieben. Selbst so elementare Dinge wie die #define-Parametrisierung werden ohne täglichen Gebrauch schnell vergessen.
Auf die Nerven gehen.
Gott, wie empfindlich alle hier sind; man kann eine Frage stellen, ohne eine Andeutung zu machen, ohne die Absicht, zu beleidigen oder zu verletzen, aber nein, irgendwo in der Seele eines unerkannten Genies gibt es ein Nörgeln und den Wunsch, sich auf Kosten eines anderen Amateurs durchzusetzen. Im englischen Forum begegnet mir das nicht, obwohl ich dort regelmäßig schreibe. Da ich mir dessen bewusst bin, versuche ich normalerweise nicht auf solche Bemerkungen zu reagieren, aber wenn du, Dmitry, dich in einer verbalen Schlacht austoben willst, werde ich dir das Vergnügen machen, dich kopfüber in deine eigenen Emanationen zu stürzen.
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo zusammen!
Gibt es eine Möglichkeit, eine schließende Klammer von #define zu erhalten?