我的源代码中有以下几行,它给出了错误
错误 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;
如何解决此错误?
这段代码适用于我的编译器(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定义为指向类型结构_HPDF_Array_Rec的指针,并实例化一个名为 id 的HPDF_Array(它是指向_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->某事?:)
如果在编译文件时出错hpdf_pdfa.c
则移动
HPDF_Array id;
行到HPDF_PDFA_GenerateID(HPDF_Doc pdf)
函数的开头。
看起来 2.2.1 分支是作为C++代码构建的,提交者没有注意到错误。在主干分支中,此错误已修复。