У меня есть код c (++), который использует sprintf для преобразования uint_64 в строку. Это должно быть переносимым как для Linux, так и для Solaris.printf + uint_64 на Solaris 9?
В 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»
Что я могу использовать?
Удивительный! Это сработало отлично. Благодаря! – 2008-10-03 00:32:42