ich habe mir jetzt nicht den Assembler Code für String vergleiche an gesehen und muss dir glauben das der Processor da mehrere Zeichen gleichzeitig vergleichen kann. (Wäre echt mal Interessant sich das in der Tiefe anzusehen).
Tatsache ist aber das für das Wort "Debug" ein 32 Bit Processor nach deiner Aussage schon nicht mehr reicht. Mir ist auch ein Rätsel wie du es machen willst wenn ich das Level auf Debug stellen das dann die Anderen Levels raus geschrieben werde ohne das ein if grab daraus kommt. If Level < LoglevelEBUG finde ich irgendwie einfacher zu lesen.
Auch wenn man jetzt eine Funktionsbeschreibung per Intellisence bekommt ist doch besser da steht als Type Loglevel als String oder Int da weiß man gleich was man da nehmen muss.
Also der Debugger unter Window Zeigt mir dann auch die Enums bei Linux sieht man es mal und einmal nicht habe noch nicht raus bekommen woran das Liegt.
Code:
enum class AppEvent : Sint32{
ChangeUiState,
CloseButtonClick,
PlayButtonClick,
MusikStreamStopp,
MusikStreamError,
MusikStreamPlay,
AlbenClick,
TitelClick,
PlaylistClick,
FilelistClick,
CloseGuiElement,
NewGeopos,
BackendConnected,
BackendDisconnected,
MapMenuOpen,
LongClick,
Click,
ClosePopup,
OpenMapTextSearch,
MediaFileUpdate,
RemoteControl
};
Code:
std::ostream& operator<<(std::ostream& os, const AppEvent c) {
switch (c) {
case AppEvent::ChangeUiState: os << "ChangeUiState"; break;
case AppEvent::CloseButtonClick: os << "CloseButtonClick"; break;
case AppEvent::PlayButtonClick: os << "PlayButtonClick"; break;
case AppEvent::MusikStreamPlay: os << "MusikStreamPlay"; break;
case AppEvent::MusikStreamStopp: os << "MusikStreamStopp"; break;
case AppEvent::MusikStreamError: os << "MusikStreamError"; break;
case AppEvent::AlbenClick: os << "AlbenClick"; break;
case AppEvent::TitelClick: os << "TitelClick"; break;
case AppEvent::PlaylistClick: os << "PlaylistClick"; break;
case AppEvent::FilelistClick: os << "FilelistClick"; break;
case AppEvent::NewGeopos: os << "NewGeopos"; break;
case AppEvent::BackendConnected: os << "BackendConnected"; break;
case AppEvent::BackendDisconnected: os << "BackendDisconnected"; break;
case AppEvent::MapMenuOpen: os << "MapMenuOpen"; break;
case AppEvent::LongClick: os << "LongClick"; break;
case AppEvent::Click: os << "Click"; break;
case AppEvent::ClosePopup: os << "ClosePopup"; break;
case AppEvent::OpenMapTextSearch: os << "OpenMapTextSearch"; break;
case AppEvent::MediaFileUpdate: os << "MediaFileUpdate"; break;
case AppEvent::RemoteControl: os << "RemoteControl"; break;
default: os << "AppEvent not in list";
}
return os;
}
Das man Kritische Processe nicht Loggen können muss kann ich nicht nachvollziehen. Ich Arbeite mit Systemen die 365/24 zu Verfügung stehen sollten und wenn das mal nicht so ist wollen alle wissen was war. Da haben mir die Log schon hofft wertvolle hinweise geliefert. Auch ist es so das ich die anzubinden Systeme nicht einfach ins Büro holen kann und für jeden neue Anbindung in der Welt rum fahren ist meinem Arbeitgeber schnell zu Teuer (mache ich auch nicht mehr gerne) ergo bleibt nur das Logging.
Aber lassen wir das du machst deine Software ich meine. Gerade bei C++ gibt es nicht nur eine Lösung für eine Sache und da spiele ganz schnell auch noch andere Sachen mit rein (Umgebung, Testbarkeit).
Eine Frage habe ich aber doch noch hast du dich schon mal damit beschäftigt wie man bei einer Exception in C++ an einen CallStack ran kommt ? das ist für mich der einzige echte Vorteil von C# oder Java.
Lesezeichen