我希望一些Linux顽固的人可以回答我在处理时间函数时应该如何编写可移植(POSIX)代码。
错误:字段'st_atim'具有不完整类型'timespec',struct timespec st_atim;
错误:':: time'尚未声明
等等..
因此,对于与许多第三方依赖关系链接的C ++设置,确保所有内容一直在编译w.r.t的正确方法是什么。包括time.h?我应该将time.h包含在我正在编译的特定平台上吗?我应该查看可能需要time.h的所有目标吗?跳舞大象和五彩纸屑躺在前面。
更新:该问题似乎与C ++版本有关,如下面的评论中所暗示的那样。我已经将gcc更新到8.3.0(从5.4),并且我已经放弃了在linux下支持c ++ 11以下的旧c ++兼容性。在更新并重建所有第三方软件包(包括ffmpeg)之后,我现在不再遇到我所描述的问题,但这并不意味着它已被修复,因为它不能再为其他人发生。事实上,我认为问题主要在于ffmpeg如何编译旧编译器并且没有明确请求c ++ 11,所以我将其保持开放状态。
我建议你考虑一下Howard Hinnant的date
库已被接受进入下一版C++
标准库(C++20
):
https://github.com/HowardHinnant/date
它应该适用于任何支持C++11
的平台。
标准版本记录在这里:https://en.cppreference.com/w/cpp/chrono