为什么我从.pas文件自动生成的.hpp文件编译报错?详见内,望高手指点!

rick29 2004-12-29 02:24:02
我用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过,可以成功,为什么这次就这样了呢?
分数不够可以再加。
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCED136 2005-06-16
  • 打赏
  • 举报
回复
补充一下,一般来说,在 hpp 中报 Declaration terminated incorrectly

错误的地方,绝大多数是下面的形式,使用上面的方法就可以了

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;
CCED136 2005-06-16
  • 打赏
  • 举报
回复
呵呵,前段时间没上网,没看到此贴。

解决办法最简单,直接注释掉发生编译错误的行就可以了。

我收集的某些控件也有这个毛病,按上面的方法解决后,至

今还没有出现过任何问题。

rick29 2005-06-16
  • 打赏
  • 举报
回复
没人答,问题过期,改成散分帖~
jishiping 2005-06-16
  • 打赏
  • 举报
回复
BCB 的头文件commctrl.h中,已经用 #define 定义了上面的这些常量,再用上面的代码定义这些常量就会出错。如果改成用 #define 定义的话,就没有问题了。或者干脆就将这些常量定义去掉就可以了。
rick29 2004-12-29
  • 打赏
  • 举报
回复
注,控件在Delphi下可以正常使用。

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧