私は小さなシステムを作っており、システム全体で "冗長"なテキスト出力を切り替えたいと思っています。コンソール出力を "冗長"にする最速の方法
私はglobals.hと呼ばれるファイル作った:これが本当であるならば、私は、彼らはほとんど何でも、構築破壊、コピーややっているときに、すべての私のクラスは、コンソールにメッセージを印刷したい
namespace REBr{
extern bool console_verbose = false;
}
を。例えば
:あなたが見ることができるよう
window(string title="",int width=1280,int height=720):
Width(width),Height(height),title(title)
{
if(console_verbose){
std::cout<<"Generating window #"<<this->instanceCounter;
std::cout<<"-";
}
this->window=SDL_CreateWindow(title.c_str(),0,0,width,height,SDL_WINDOW_OPENGL);
if(console_verbose)
std::cout<<"-";
if(this->window)
{
this->glcontext = SDL_GL_CreateContext(window);
if(console_verbose)
std::cout<<".";
if(this->glcontext==NULL)
{
std::cout<<"FATAL ERROR IN REBr::WINDOW::CONSTR_OPENGLCONTEXT: "<<SDL_GetError()<<std::endl;
}
}
else std::cout<<"FATAL ERROR IN REBr::WINDOW::CONSTR_WINDOW: "<<SDL_GetError()<<std::endl;
if(console_verbose)
std::cout<<">done!"<<endl;
}
は今、私はそのコンストラクタでIFSの多くを持っています。そして、私は本当にそれを望んでいないので、それは私のアプリケーションを遅くするでしょう。私はこれを "ローディングバー"を取り除かずにできるだけ速くする必要があります(これは、プログラムがどの機能を停止したかを判断するのに役立ちます)。
これを達成する最善の方法は何ですか?私のシステムで
Everyingは、私は多くの場合、デバッグレベルをサポートLoggerクラスを使用REBr
'console_verbose'を' constexpr'とマークしてください。式が 'false'として評価されれば、すべての' if'を最適化するようになります。 – Alexey
また、 'if(...を入力しないようにするには) ''マクロを定義するだけです。#define VERB_STREAM if(console_verbose)std :: cout 'を使用し、' VERB_STREAM << "のように使用します。ウィンドウ"#<< this-> instanceCounter << ' - '; ' – chtz
質問:https://stackoverflow.com/q/6692238/1632887 – seleciii44