【问题标题】:C Struct - field has incomplete typeC Struct - 字段类型不完整
【发布时间】:2017-08-16 21:23:20
【问题描述】:

在我的头文件中有这个

    typedef struct _client_value
{
    int client_id;
    struct timeval t;
    size_t size;
    char value[0];
} client_value;

我已经包含了<time.h>,但是当我编译时,它说:field 't' has incomplete type struct timeval t

我不明白这是怎么发生的。

【问题讨论】:

  • 包括sys/time.h,而不是time.h
  • 谢谢各位。它似乎解决了我的问题。傻我。
  • char value[0]; 不是 C 兼容代码,尽管它可能与某些编译器“工作”。
  • 有什么更好的方法来做到这一点?它是我在网上找到的 libpaxos 的一部分。不知道是什么意思。
  • Using char value[0]; 是 'struct hack' 的一种变体,它被添加到 C99 并写成 char value[];灵活数组成员 变得过时——根本没有维度数组。经典的“struct hack”使用char value[1];——GCC 和模拟它的编译器支持char value[0];,但 C 标准不支持(并且该标准从未正式支持 struct hack——但它始终有效,因为编译器编写者是现实主义者)。

标签: c struct incomplete-type


【解决方案1】:

它的#include <sys/time.h>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多