#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 и тогда куцая скобка в конце
допустим мы хотим __FUNCSIG__ и ErrorLast добавить к макросу. При вызове макроса на строке с его кодом будет одна закрывающая скобка. Так что, да мелькнула мысль, нельзя ли это как-то усовершенствовать
допустим мы хотим __FUNCSIG__ и ErrorLast добавить к макросу. При вызове макроса на строке с его кодом будет одна закрывающая скобка. Так что, да мелькнула мысль, нельзя ли это как-то усовершенствовать
А на мой вопрос никак нельзя ответить?
Может просто макросами нормально пользоваться? Если, конечно, руки не отвалятся от двух круглых скобок.
#define LP(X) Print(X) void OnStart() { LP("myMessage"); }
А на мой вопрос никак нельзя ответить?
Может просто макросами нормально пользоваться? Если, конечно, руки не отвалятся от двух круглых скобок.
про параметры надо было прочитать, да )
Спасибо!
В общем виде - это вот так решается:
#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"); }
Три варианта: временный объект, singletone, функция, - кому, что по религии ближе))) По быстродействию, практически не различимы.
#define LOG(dText) printf("%s, %s, line %i, %s",__FUNCSIG__,__FILE__,__LINE__,dText); void OnStart(void){ LOG("bezgovna"); }Но, к сожалению, на лохов впечатления не произведешь.
Но, к сожалению, на лохов впечатления не произведешь.
А че сразу это решение человеку не показал?)))
А че сразу это решение человеку не показал?)))
Спасибо! )
По существу.
На варианте с классом я и остановился. Даже такие элементарные вещи, как параметризация #define без ежедневного употребления быстро забываются.
По нервам.
Боже, какие здесь все ранимые, задашь вопрос без подтекста, без намерения обидеть или оскорбить, но нет, где-то в душе непризнанного гения свербит и тешется желание самоутвердиться за счет очередного любителя. На английском форуме с этим не сталкиваюсь, хотя пишу там регулярно. Осознавая это, на подобные замечания обычно я стараюсь не реагировать, но если Дмитрий, вы желаете порезвиться в словесной битве, то я доставлю вам удовольствие окунув вас с головой в ваши же эманации.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет!
Можно ли как-то добиться от #define закрывающей скобки?