0

vxTypes.h

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

更新 00:

标准输出

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

4 回答 4

1

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

于 2013-02-05T18:11:19.540 回答
0

如果定义了宏_TYPE_fpos_t

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

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

于 2012-10-24T14:14:31.670 回答
0

如果__RTP__未定义且_TYPE_fpos_t已定义,则定义_FPOS_T、调用宏_TYPE_fpos_t_TYPE_fpos_t随后取消定义。

于 2012-10-24T14:14:54.180 回答
0

It ( _TYPE_fpos_t) 是为实现保留的名称,可以随意使用。你干涉它,后果自负。

在这种情况下,它可能是用来控制typedef类型的fpos_t,它可以在多个头文件中定义,但应该只定义一次(在 C99 或更早的规则下),而不管包含多少头文件和顺序他们包括在内。可能在多个标头中定义的其他类型和宏存在类似的机制(NULLsize_t是两个主要示例)。

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

于 2012-10-24T14:43:52.823 回答