Ich habe den folgenden Code und ich bin mir nicht sicher, ob es == TRUE
oder != FALSE
sein sollte.WinAPI AttachConsole?
Dies ist der Code jetzt:
void AttachConsole() {
bool has_console = ::AttachConsole(ATTACH_PARENT_PROCESS) == TRUE;
if (!has_console) {
// We weren't launched from a console, so just return.
// We could alloc our own console, but meh:
// has_console = AllocConsole() == TRUE;
has_console_attached_ = false;
return;
}
has_console_attached_ = true;
}
Ich denke, es != FALSE
sein sollte, aber ich bin mir nicht sicher?
in Windows, 'TRUE' ist 1 und' FALSE' ist 0, also beide Möglichkeiten, die Sie denken, sind die gleichen – bruceg
'TRUE' kann 1 sein, aber die meisten' BOOL' Funktionen sind dokumentiert als Rückgabe ungleich Null auf Erfolg, nicht 1 spezifisch, also am besten '! = FALSE'. In diesem Fall wird jeder Wert ungleich Null in "true" konvertiert, wenn er einem 'bool' zugeordnet wird, also vergleichen Sie den Wert überhaupt nicht, wie Jerrys Antwort zeigt. –
@ThomasMccaffery: Wissen Sie, dass diese Beispielfunktion auf eine einzige Codezeile reduziert werden kann? 'void AttachConsole() {has_console_attached_ = :: AttachConsole (ATTACH_PARENT_PROCESS); } ' –