error C2143: 语法错误 : 缺少“;”(在“->”的前面)

gcyxf 2013-01-10 11:45:34
我在运行fltk程序时遇到这个错误:


源代码:
#ifndef FL_DOXYGEN
#ifndef Fl_X_H
# error "Never use <FL/win32.H> directly; include <FL/x.H> instead."
#endif // !Fl_X_H

#include <windows.h>
typedef HRGN Fl_Region;
typedef HWND Window;
typedef POINT XPoint;

#include <FL/Fl_Window.H>


#else
FL_EXPORT Window fl_xid_(const Fl_Window* w);
#define fl_xid(w) fl_xid_(w)
#endif // FL_LIBRARY || FL_INTERNALS

FL_EXPORT Fl_Window* fl_find(Window xid);
void fl_clip_region(Fl_Region);
fl_current_xmap
// most recent fl_color() or fl_rgbcolor() points at one of these:
extern FL_EXPORT struct Fl_XMap {
COLORREF rgb; // this should be the type the RGB() macro returns
HPEN pen; // pen, 0 if none created yet
int brush; // ref to solid brush, 0 if none created yet
} *;
inline COLORREF fl_RGB() {return fl_current_xmap->rgb;}
inline HPEN fl_pen() {return fl_current_xmap->pen;}
FL_EXPORT HBRUSH fl_brush(); // allocates a brush if necessary
FL_EXPORT HBRUSH fl_brush_action(int); // now does the real work

extern FL_EXPORT HINSTANCE fl_display;
extern FL_EXPORT Window fl_window;
extern FL_EXPORT HDC fl_gc;
extern FL_EXPORT MSG fl_msg;
extern FL_EXPORT HDC fl_GetDC(Window);
extern FL_EXPORT HDC fl_makeDC(HBITMAP);


结果是:

f:\cga\fltk-1.3.2\fl\win32.h(108): error C2872: “Window”: 不明确的符号
1> 可能是“f:\cga\fltk-1.3.2\fl\win32.h(39) : HWND Window”
1> 或 “f:\cga\fltk-1.3.2\fl\events.h(222) : fltk::Window”
1>f:\cga\fltk-1.3.2\fl\win32.h(112): error C2872: “Window”: 不明确的符号
1> 可能是“f:\cga\fltk-1.3.2\fl\win32.h(39) : HWND Window”
1> 或 “f:\cga\fltk-1.3.2\fl\events.h(222) : fltk::Window”
1>f:\cga\fltk-1.3.2\fl\win32.h(127): error C2872: “Window”: 不明确的符号
1> 可能是“f:\cga\fltk-1.3.2\fl\win32.h(39) : HWND Window”
1> 或 “f:\cga\fltk-1.3.2\fl\events.h(222) : fltk::Window”
1>f:\cga\fltk-1.3.2\fl\win32.h(130): error C2872: “Window”: 不明确的符号
1> 可能是“f:\cga\fltk-1.3.2\fl\win32.h(39) : HWND Window”
1> 或 “f:\cga\fltk-1.3.2\fl\events.h(222) : fltk::Window”

在另外一个文件中也有window的定义,但我不知道该怎么解决这个问题。上网搜了很多,但和我的这个情况不同,有大神可以帮忙解决一下么?非常感谢
...全文
225 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
minchieh 2013-03-23
  • 打赏
  • 举报
回复
引用 3 楼 gcyxf 的回复:
引用 2 楼 duoluoo 的回复:你events.h中定义的窗口句柄名称和win32.h冲突了? 加个命名空间试试 但是它们在同一个命名空间下~~该怎么加呢?
那就再加命名空间 假设a.h 和 b.h 都有Window的声明 然后你a.h必须引用b.h 然后引用又有冲突 那么 在a.h中这么写: namespace bbbbbbbb{ #include“b.h” }
chuachua66 2013-01-21
  • 打赏
  • 举报
回复
你把这个typedef HWND Window;改改行么,定义个window1之类的,或者namespace XXX{typedef HWND Window;} 用的时候,XXX:Window
Lena-Yang 2013-01-20
  • 打赏
  • 举报
回复
windows平台的还没学。。望天
gcyxf 2013-01-20
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。” 的方法解决的。
恩恩~我也正在学习哈~
fukainankai 2013-01-11
  • 打赏
  • 举报
回复
引用 5 楼 haolipengzhanshen 的回复:
楼主的代码可读性不太好,本身菜鸟的我表示看不懂。。。
额滴孩,您应该说楼主copy的代码可读性不好,呵呵。 另,楼主把include路径放到最后试试?
编程实战营 2013-01-11
  • 打赏
  • 举报
回复
楼主的代码可读性不太好,本身菜鸟的我表示看不懂。。。
minchieh 2013-01-11
  • 打赏
  • 举报
回复
你events.h中定义的窗口句柄名称和win32.h冲突了? 加个命名空间试试
赵4老师 2013-01-11
  • 打赏
  • 举报
回复
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。” 的方法解决的。
gcyxf 2013-01-11
  • 打赏
  • 举报
回复
引用 2 楼 duoluoo 的回复:
你events.h中定义的窗口句柄名称和win32.h冲突了? 加个命名空间试试
但是它们在同一个命名空间下~~该怎么加呢?
gcyxf 2013-01-10
  • 打赏
  • 举报
回复
程序粘贴的不完整,但意思应该比较明确了。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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