我已经将工作环境从Ubuntu 12.04升级到14.04。 这导致我的编译器clang
从3.0-6ubuntu3
升级到3.4-1ubuntu3
。C++:错误:基类有一个灵活的阵列成员
当我编译我的代码现在我得到一个错误,我没有用得到:
error: base class has a flexible array member
我跟着代码,我发现我使用inotify.h
:
#include <sys/inotify.h>
在这个文件中就在于这个结构:
struct inotify_event {
int wd; /* watch descriptor */
uint32_t mask; /* watch mask */
uint32_t cookie; /* cookie to synchronize two events */
uint32_t len; /* length (including nulls) of name */
char name __flexarr; /* stub for possible name */
};
接下来,我看了一下__flexarr
here但我没有设法弄清楚什么地方出了问题,或者我该如何解决它。 任何帮助将不胜感激。
更新:作为BobTFish答案的后续,这里是在我的代码中使用inotify_event。
我有一个名为inotify_condition_c
的类,它有一个inotify_event
类型的成员,我们称之为m_notify_event
。
我有几个类从inotify_condition_c
继承。 编译错误clang返回指向那些派生类。
这不是一个新的鳕鱼,它在我们的回购很长一段时间。我仍然不明白为什么从ubuntu 12.04升级到14.04(还有新版本的clang)显示错误。
谢谢。查看我的更新。 –
@AndyThomas我加了一些想法。尽管没有明确的解决方案,这取决于你,因为只有你真的了解你的代码库。 – BoBTFish