gpt4 book ai didi

C++ 系统文件 bits/stat.h 突然中断, "error: field ‘st_atim’ 类型不完整”

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:36 25 4
gpt4 key购买 nike

我正在将一个已知可以运行的大型旧系统移植到 Ubuntu 64 位 Linux 上。系统使用FLTK,升级到1.3.2,我用的是NetBeans。文件的第一行包含基本通用/FL/Fl.H。这包括较新的 unicode 启用程序/FL/fl_utf8.h。这包括系统文件 <sys/stat.h> ,然后包含系统文件 <bits/stat.h> .连接起来时,-I 包括各种不同的目录,系统文件突然在编译时中断:

In file included from /usr/include/sys/stat.h:107,
/usr/include/bits/stat.h:88: error: field ‘st_atim’ has incomplete type
/usr/include/bits/stat.h:89: error: field ‘st_mtim’ has incomplete type
/usr/include/bits/stat.h:90: error: field ‘st_ctim’ has incomplete type
/usr/include/bits/stat.h:149: error: field ‘st_atim’ has incomplete type
/usr/include/bits/stat.h:150: error: field ‘st_mtim’ has incomplete type
/usr/include/bits/stat.h:151: error: field ‘st_ctim’ has incomplete type

是不是最新的FLTK不行了?对 64 位过敏? Internet 建议系统头文件中存在错误? glibc 不兼容?添加 _GNU_SOURCE?不使用_MISC?博客中有很多乱七八糟的东西,这是怎么回事?

最佳答案

简短的回答:某人在某处创建了一个名为“time.h”的随机文件。您的包含路径包含了它所在的目录。这会以一种不明显的方式使系统短路。该文件甚至不必使用,它可以是一个随机测试临时文件,其中一位程序员放在一边,而不是合并。它只需要存在,并且可以在更大的包含路径中访问。这足以让你流连忘返。根本不是 FLTK 问题。

较长的答案:stat.h 从基于 __time_t st_atime 等升级到基于 struct timespec st_atim 等 [注意末尾缺少 e] 用于处理纳秒分辨率时间戳。但是timespec是在系统的time.h中定义的。如果您在路径中的某处包含一个随机 time.h,这会掩盖包含,从而消除 struct timespec 的定义。

显然,同样的问题也是 FFMpeg v1.0 和/include/libavutil 的问题。

底线:坚持没有人制作名为“time.h”的文件。

关于C++ 系统文件 bits/stat.h 突然中断, "error: field ‘st_atim’ 类型不完整”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14947691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com