1

我的源代码中有以下几行给出了错误

错误 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;

如何解决此错误?

4

2 回答 2

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的指针并实例化一个名为 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->something而不是id->something?:)

于 2012-09-27T09:00:30.827 回答
0

如果编译hpdf_pdfa.c文件时出错,请移动

HPDF_Array id;

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

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

于 2012-11-25T08:32:56.310 回答