在内核中:我正在将时间值读取为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
。