【发布时间】:2015-06-09 07:44:18
【问题描述】:
// 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;
}
在调用者内:
uint64_t ts;
ts = get_timestamp();
printk ( "returned timestamp is 0x%x \n", ts );
我在屏幕上看到以下内容,上面有什么问题?
计数器值为0x000045a5
返回的时间戳是0x00000000
计数器值为0x0000698f
返回的时间戳是0x00000000
【问题讨论】:
-
我认为您需要为 64 位整数使用不同的格式说明符,而不仅仅是
%x。见What is the argument for printf that formats a long?。但不要问我%lx、%llx、%l64x是否正确。 -
问题出在格式上。值将被隐式转换为正确的类型,因此在大多数情况下您无需担心。