Warum funktioniert PRIu64 nicht in diesem Code?

Als pro diese Antwortich habe versucht, drucken uint64_taber es gibt mir eine Fehlermeldung:

Fehler: expected`) " vor "PRIu64'

Folgenden ist ein minimal-code, der zeigt, was ich zu tun versuche:

#define __STDC_FORMAT_MACROS
#include <inttypes.h>
#include <cstdio>

class X {
  X() {
    uint64_t foo = 0;
    printf("%07" PRIu64 ": ", foo);
  }
};

int main() {}

Dieser minimal-code kompiliert, aber meine eigentliche code nicht. Allerdings habe ich versucht mit den 2 Linien innerhalb X::X() genau die gleichen in meinem eigentlichen code, und das funktioniert nicht.

Was ich suchen soll Debuggen weiter? Meine eigentliche code auch #includeN anderen Header. Könnte dass das problem verursachen? Tut Reihenfolge, einschließlich der Header eine Rolle?

Bearbeiten
PRIu64 ist wie folgt definiert auf meinem Rechner:

# if __WORDSIZE == 64
#  define __PRI64_PREFIX    "l"
#  define __PRIPTR_PREFIX   "l"
# else
#  define __PRI64_PREFIX    "ll"
#  define __PRIPTR_PREFIX
# endif

# define PRIu64     __PRI64_PREFIX "u"

InformationsquelleAutor der Frage Thanos | 2013-01-26

Schreibe einen Kommentar