1

我正在尝试使用 MinGW 构建第 3 方开源项目。依赖项之一是 wxWidgets。当我尝试从 MSYS 制作项目时,我得到一个编译器错误

/MinGW/msys/1.0/local/include/wx-2.8/wx/msw/private.h

In function 'COLORREF wxColourToRGB(const wxColour&)':
error: cannot convert 'RGB' to 'COLORREF {aka long unsigned int}' in return

这有点奇怪,因为根据微软的说法,RGB宏返回一个COLORREF.

事实上,在 H:\MinGW\include 中查找,我找到了带有以下代码的wingdi.h

#define RGB(r,g,b) ((COLORREF)((BYTE)(r)|((BYTE)(g) << 8)|((BYTE)(b) << 16)))

什么样的事情会导致这个错误?有什么方法可以检查 COLORREF 和 RGB 是否包含在wingdi.h 而不是其他地方?这还值得检查吗?

规格

  • GCC 版本 4.7.2
  • wxWidgets 版本 2.8.12

(我是 C++ 和 MinGW 的新手,但通常是计算机和编程知识)

4

1 回答 1

1

尝试使用预处理源-E并检查宏扩展实际发生的情况或是否有某些东西正在重新定义宏。

#include毫无疑问,预处理后的源代码在标头依赖项之后会非常冗长。您的文本编辑器的搜索功能,grepfindstr这里是您的朋友。

于 2013-06-27T23:45:33.480 回答