C编译错误:未知类型名称'__evenaccess'

时间:2013-06-17 20:16:04

标签: c gcc compiler-errors

我知道这个话题已被打死,但在查看了很多代码示例后,我似乎无法找到这种结构的任何错误。它直接来自公司的司机。让我知道你的想法:

struct Descriptor
{
    __evenaccess uint32_t   status;
#if __LIT                               
    /* Little endian */
    __evenaccess uint16_t   size;
    __evenaccess uint16_t   bufsize;
#else                                   
    /* Big endian */
    __evenaccess uint16_t   bufsize;
    __evenaccess uint16_t   size;

#endif
    int8_t                  *buf_p;
    struct Descriptor       *next;
};

typedef struct Descriptor ethfifo;

由于它无法识别结构,我也得到了很多这些:  错误:'ethfifo'没有名为'status'的成员

谢谢!

2 个答案:

答案 0 :(得分:6)

我通过搜索__evenaccess找到了以下文档: http://documentation.renesas.com/doc/products/tool/apn/rej06j0102_rxc_rxmg_sh_ap.pdf

显然是来自SuperH和RX芯片的编译器。它的意思是创建机器代码,使用只读取该大小值的指令读取值。

否则,编译器可以通过读取uint16_t和位移来自由读取uint32_t。在许多系统中效率会更高。

但是在处理可能导致总线错误或硬件未定义行为的机器寄存器时。

答案 1 :(得分:3)

这是gcc未知的编译器扩展。它来自另一个编译器。

您可以通过定义:

来删除它
 #define __evenaccess

位于文件顶部。