( stat
2) 手册解决了对时间戳字段的纳秒分辨率的支持,但在旨在可移植的程序中测试它们的存在或它们的名称看起来并不简单:多达四个功能测试宏名称 ( _BSD_SOURCE
, _SVID_SOURCE
, _POSIX_C_SOURCE
, _XOPEN_SOURCE
) 被提及。看起来手册建议如下:
#if defined(_BSD_SOURCE) || defined(_SVID_SOURCE) || \
defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200809L || \
defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 700
// use st_atim.tv_nsec, etc.
#elif 1 // really?
// use st_atimensec, etc.
#else // when?
// no nanosecond field exists
#endif
- 它没有提到任何既没有
st_atim.tv_nsec
也没有st_atimensec
的可能性。这两个名称之一是否保证存在? - 它说纳秒字段返回值为 0,但这与实际值 0 无法区分。如何测试是否真的支持亚秒级时间戳?