为什么我从.pas文件自动生成的.hpp文件编译报错?详见内,望高手指点!
我用Delphi写了一个控件,写入原有的一个bpk里,在编译bpk的时候,我把.pas加进来,然后编译、安装,一切顺利,控件面板上也有了相应的控件。可是我在新的程序Form里加入这个控件的时候,问题来了:
加入了新的控件后,Form上也显示了这个控件,并且.cpp里也自动包含了.hpp(由刚才的控件编译自动生成的),然后我编译程序,结果在.hpp的常量定义时报错:
//-- var, const, procedure ---------------------------------------------------
static const Word HDF_BITMAP_ON_RIGHT = 0x1000;
static const Word HDF_IMAGE = 0x800;
static const Shortint HDI_IMAGE = 0x20;
static const Shortint HDI_DI_SETITEM = 0x40;
static const Byte HDI_ORDER = 0x80;
...
每行都报同样的错误:E2040 Declaration terminated incorrectly
我试了把上面的定义都改成#define形式,这里不报错了,可定义下面接着的函数声明
extern PACKAGE void __fastcall Register(void);
extern PACKAGE int __fastcall Header_InsertItemEx(HWND Header, int Index, const THDItemExA &Item);
extern PACKAGE BOOL __fastcall Header_GetItemEx(HWND Header, int Index, THDItemExA &Item);
extern PACKAGE BOOL __fastcall Header_SetItemEx(HWND Header, int Index, const THDItemExA &Item);
extern PACKAGE BOOL __fastcall Header_GetItemRect(HWND Header, int Index, Types::TRect &Rect); // 从这里开始,下面的函数声明都报错,上面的没有报错
extern PACKAGE unsigned __fastcall Header_GetImageList(HWND Header);
...
却又开始报错:
E2141 Declaration syntax error
而且前更奇怪的是,它从函数Header_GetItemRect开始报错,它上面的函数都没有报错。
我很迷茫。我以前也直接把.pas的东西加进.cpp过,可以成功,为什么这次就这样了呢?
分数不够可以再加。