【问题标题】:Why GCC doesn't report any errors or warnings when using WinAPI: COLORREF/RGB?为什么 GCC 在使用 WinAPI: COLORREF/RGB 时不报告任何错误或警告?
【发布时间】:2013-12-09 02:56:00
【问题描述】:

正确的用法是:

COLORREF COLOR = RGB (255,255,255);

但是,这个

COLORREF COLOR = (255,255,255);

可以在没有任何警告或错误的情况下编译。

为什么?这么奇怪?谢谢。

参考:

  1. COLORREF

  2. RGB()

【问题讨论】:

    标签: c winapi mingw32


    【解决方案1】:

    COLORREF 类型是 DWORD 的 typedef。线

    COLORREF COLOR = (255,255,255);
    

    等价于

    DWORD COLOR = 255;
    

    因此编译得很好。然而,它可能不会做你想做的事。

    原因是 expr1, expr2 在 C 中产生 expr2 的值,所以 255, 255, 255 的值是 255。括号在这里不起作用。见:

    http://en.wikipedia.org/wiki/Comma_operator

    请注意,RGB 宏本身只是从红色、绿色和蓝色分量中生成适当的DWORD(某个数字)。数字本质上是 这里的 COLORREF。

    【讨论】:

    • 谢谢,但为什么不将 COLORREF 声明为结构呢? IE。 typedef struct _COLORREF { BYTE RED, BYTE GREEN, BYTE BLUE } COLORREF;我认为将 COLORREF 声明为结构要好得多,不是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多