この回答に従って、を印刷しようとしましたuint64_t
が、エラーが発生します。
エラー:「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
他のヘッダーもあります。それが問題を引き起こしている可能性がありますか?ヘッダーを含める順序は重要ですか?
私のマシンでは、編集
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"