sprintf を使用して uint_64 を文字列に変換する c(++) コードがあります。これは、Linux と Solaris の両方に移植可能である必要があります。
Linux では %ju を使用しますが、Solaris では同等のものはないようです。私が見つけることができる最も近いものは %lu ですが、これは間違った出力を生成します。サンプルコード:
#include <stdio.h>
#include <sys/types.h>
#ifdef SunOS
typedef uint64_t u_int64_t;
#endif
int main(int argc, char **argv) {
u_int64_t val = 123456789123L;
#ifdef SunOS
printf("%lu\n", val);
#else
printf("%ju\n", val);
#endif
}
Linux では、出力は期待どおりです。Solaris 9 では (聞かないでください)、「28」です。
何を使用できますか?