#define LPRINT_END , __FUNCSIG__); #define LPRINT gFactory.getCLogManager().doPrint (
というログメッセージが表示され、真ん中に
LPRINT "abnormal situation, couldn't select position", ENUM_LOG_LEAD_DEBUG
クロージングなし
LPRINT (FUNCSIG, "abnormal situation, couldn't select position", ENUM_LOG_LEAD_DEBUG);
どちらかの先頭(FUNCSIGから#define、そして末尾の括弧)に
Nikolai Karetnikov:
例えば、あるマクロに __FUNCSIG__ と ErrorLast を追加したいとします。マクロが呼び出されると、そのコードのある行に閉じ括弧が1つ付くことになります。そうだ、これを改善する方法はないだろうか、と思いついたのです。
私の質問に答える方法はないのでしょうか?
普通にマクロを使えばいいのでは?もちろん、2つの括弧から手が落ちなければの話ですが。
#define LP(X) Print(X) void OnStart() { LP("myMessage"); }
Dmitry Fedoseev:
私の質問に答える方法はないのでしょうか?
マクロをちゃんと使えないの?もちろん、2つの括弧から手が落ちなければの話ですが。
パラメータについて読んでおけばよかったです、はい )
ありがとうございました。
一般的には、このように解決されます。
#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"); }
3つの選択肢:テンポラリーオブジェクト、シングルトーン、関数 - どちらが宗教的か)速度の面では、実質的に見分けがつかないほどです。
#define LOG(dText) printf("%s, %s, line %i, %s",__FUNCSIG__,__FILE__,__LINE__,dText); void OnStart(void){ LOG("bezgovna"); }しかし、残念ながら、吸い魔を感動させることはできません。
Dmitry Fedoseev:
でも、残念ながら、カモを感動させることはできません。
でも、残念ながら、カモを感動させることはできません。
なぜ、この解決策をすぐに見せなかったのですか?)
Vladimir Simakov:
なぜ、この解決策をすぐに見せなかったのですか?)
ありがとうございました。)
本質的なことです。
クラスと一緒にバリアントで立ち止まりました。defineのパラメータ化など、初歩的なことでも、日常的に使っていないとすぐに忘れてしまう。
神経について。
しかし、そうではなく、無名の天才の魂のどこかに、他のアマチュアを犠牲にしてでも自分を主張したいという欲求があるのです。私は定期的に英語のフォーラムに書き込んでいますが、遭遇することはありません。だから、普段はあまり反応しないようにしているのだが、もしドミトリーが口喧嘩をしたければ、自分の発露の中に真っ逆さまに突っ込むという快挙をやってのける。
![MQL5 - MetaTrader 5クライアントターミナルにビルトインされたトレードストラテジーの言語](https://c.mql5.com/i/registerlandings/logo-2.png)
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
みなさん、こんにちは。
defineから閉じ括弧を取得する方法はありますか?