Anzeige:
Ergebnis 1 bis 3 von 3

Thema: [C++] Assert nur bei debug ausführen

  1. #1
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762

    [C++] Assert nur bei debug ausführen

    Ich möchte in meinem Code assert() benutzen, allerdings nur wenn "debug" definiert ist, d.h. wenn ich in meinem Code ein #define debug stehen habe.

    Ich bin allerdings schreibfaul und habe keine Lust das jedesmal so zu schreiben:

    #ifdef debug
    assert(bla);
    #endif

    Es wäre nett wenn ich das ifdef und endif nicht jedesmal schreiben muss.
    Eine Möglichkeit wäre ein Makro ASSERT, dass die obigen 3 Zeilen simuliert.
    Aber kann man überhaupt Makrodefinitionen in einem Makro schreiben?

    Eine Funktion
    void ASSERT(bool bla) {
    #ifdef debug
    assert(bla);
    #endif
    }
    wäre noch möglich, aber dann hab ich in meinem Release-Code sinnlose Funktionsaufrufe stehen, weil die Funktion dann leer ist.

    Gibt es sonst noch eine Möglichkeit?
    I haven't lost my mind - It's somewhere on a backup-disc

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Zitat Zitat von Manpage
    If the macro NDEBUG was defined at the moment <assert.h> was last
    included, the macro assert() generates no code, and hence does nothing
    at all. Otherwise, the macro assert() prints an error message to stan‐
    dard error and terminates the program by calling abort() if expression
    is false (i.e., compares equal to zero).
    d.h. du willst eigentlich gar nix machen weil das schon bedacht wurde.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    ok, für assert wäre das dann gelöst.
    (ich hätte ja auch mal auf die Idee kommen können, die manpage von assert zu lesen )

    Aber für Debug-Textausgaben kann ich das noch gebrauchen. (also assert z.B. durch printf im obigen Text ersetzen)
    Da kann man ja gleich NDEBUG statt debug benutzen.
    (hoffentlich steht das jetzt in keiner manpage )
    I haven't lost my mind - It's somewhere on a backup-disc

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •