// Returns 64 bit mac timer count value
uint64_t get_timestamp()
{
uint16_t cnt;
cnt = read_counter();
printk ("counter value is 0x%x\n", cnt);
return cnt;
}
в вызывающей:Как вернуть 16-битное значение как 64 бит?
uint64_t ts;
ts = get_timestamp();
printk ("returned timestamp is 0x%x \n", ts);
я получил следующее на экране, Что случилось выше?
значение счетчика является 0x000045a5
отметка времени является 0x00000000
значение счетчика является 0x0000698f
отметка времени является 0x00000000
Я думаю, вам нужен другой формат спецификатора для 64-битных целых чисел, а не только '% x'. См. [Что такое аргумент для printf, который форматирует длинный?] (Http://stackoverflow.com/questions/38561/what-is-the-argument-for-printf-that-formats-a-long). Но не спрашивайте меня: '% lx','% llx', '% l64x' или что-то в этом роде. – CodesInChaos
проблема с форматом. Значения будут неявно приведены к правильному типу, поэтому в большинстве случаев вам не нужно беспокоиться об этом. –