В соответствии с этим ответом я попробовал распечатать uint64_t
, но это дает мне ошибку:
error: ожидается ``) 'перед' PRIu64 '
Ниже приведен минимальный код, показывающий, что я пытаюсь сделать:
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
#include <cstdio>
class X {
X() {
uint64_t foo = 0;
printf("%07" PRIu64 ": ", foo);
}
};
int main() {}
Этот минимальный код компилируется, но мой фактический код этого не делает. Тем не менее, я пробовал с 2 строк внутри X::X()
точно так же в моем фактическом коде, и это не работает.
Что я должен искать для дальнейшего отладки? Мой фактический код также #include
других заголовков. Может ли это вызвать проблему? Имеет ли смысл включать заголовки?
Edit
PRIu64
определяется на моей машине следующим образом:
# 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"