`_TYPE_fpos_t;`是什么意思?

时间:2012-10-24 14:11:18

标签: c linux vxworks

vxTypes.h

#if !defined(__RTP__)
#ifdef _TYPE_fpos_t
#define _FPOS_T
_TYPE_fpos_t;
#undef _TYPE_fpos_t
#endif
#endif /* __RTP__ */

更新00:

stdio.h中

typedef struct fpos_t
    {   /* file position */
    long _Off;  /* can be system dependent */
    _Mbstatet _Wstate;
    } fpos_t

我在fpos_t类型

中有编译错误(冲突)
error: conflicting declaration 'struct fpos_t'...'fpos_t' has a previous declaration as `typedef long int fpos_t'

所以我需要首先理解代码来修复它,有人可以解释代码的作用,特别是_TYPE_fpos_t;部分吗?

4 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。假设您正在使用gcc工具集,请使用“-nostdinc”编译器选项来阻止GCC使用默认搜索路径。 (diab工具集应该有类似的选项。)你的项目makefile应该已经包含一个“-I dir ”条目列表,这些条目应该使编译器可以看到系统头。

答案 1 :(得分:0)

如果定义了宏_TYPE_fpos_t

  • 定义宏_FPOS_T;
  • 调用宏_TYPE_fpos_t;
  • 取消定义宏_TYPE_fpos_t

无论如何,它取决于代码的其余部分(_TYPE_fpos_t的定义等)。

答案 2 :(得分:0)

如果未定义__RTP__且定义了_TYPE_fpos_t,请定义_FPOS_T,然后调用宏_TYPE_fpos_t并取消定义_TYPE_fpos_t

答案 3 :(得分:0)

它(_TYPE_fpos_t)是为实现保留的名称。你可以自担风险。

在这种情况下,它可能用于控制类型typedef的{​​{1}},它可以在多个标题中定义,但只应定义一次(在C99或更早的规则下),无论如何包括多少标题以及包含它们的顺序。围绕在多个标头中定义的其他类型和宏有可能存在类似的机制(fpos_tNULL是两个主要示例。)

学习如何通过查看系统标头来编写标头是一项艰苦的工作。系统头部的压力和约束是惊人的,并导致各种扭曲。