在内核中:我正在将时间值读取为extern s64 Latency;类型

在用户空间中:

extern double latency;
//fp is reading the kernel value (i.e Latency)
fscanf (fp,"%lf", latency);


如果我从内核在用户空间中将s64读取为double。有数据丢失的可能性吗?
我应该使用哪种数据类型来获取完整的值?

最佳答案

简短的答案:是的,肯定会有数据丢失。

考虑一下,有符号的64位整数(s64)和double具有64位存储。但是,尽管s64仅涉及整数,而double也可以表示分数。为此,它需要利用一些位来获取此信息,因此无法代表全部64位整数。

您应该在工具链的int64_t中使用stdint.h

09-05 15:40