非法使用类型作为表达式

时间:2012-09-27 08:53:14

标签: c compiler-errors libharu

我的源代码中有以下行,它们给出了错误

  

错误C2275:'HPDF_Array':非法使用此类型作为表达式“   :   这是头文件中的实际代码:

 typedef struct _HPDF_Array_Rec  *HPDF_Array;

typedef struct _HPDF_Array_Rec {
    HPDF_Obj_Header  header;
    HPDF_MMgr        mmgr;
    HPDF_Error       error;
    HPDF_List        list;
} HPDF_Array_Rec;

    HPDF_Array id;

如何解决此错误?

2 个答案:

答案 0 :(得分:0)

此代码适用于我的编译器(gcc 4.7.1),因此如果您仍遇到问题,可能需要显示更多代码或信息:

// content of this struct is irrelevant, so I just made a dummy struct
struct _HPDF_Array_Rec {
    int dummy;
};


typedef struct _HPDF_Array_Rec  *HPDF_Array;
HPDF_Array id;

您问题中的代码所做的是将 HPDF_Array 类型定义为 struct _HPDF_Array_Rec 类型的指针,并实例化一个 HPDF_Array (这是一个名为id

的指向_HDPF_Array_Rec结构的指针

修改

代码仍然正常。我用谷歌搜索了错误代码并得到了这个:

http://msdn.microsoft.com/en-us/library/76c9k4ah(v=vs.71).aspx

An expression uses the -> operator with a typedef identifier.

检查您的代码是否存在此类错误。你正在做的任何地方 HPDF_Array->某事而不是 id->某事? :)

答案 1 :(得分:0)

如果您在编译hpdf_pdfa.c文件时遇到错误,请移动

HPDF_Array id;

行到HPDF_PDFA_GenerateID(HPDF_Doc pdf)函数的开头。

似乎2.2.1分支是作为C ++代码构建的,并且提交者没有注意到错误。在主干分支中,此错误已得到修复。