【发布时间】:2013-12-09 02:56:00
【问题描述】:
正确的用法是:
COLORREF COLOR = RGB (255,255,255);
但是,这个
COLORREF COLOR = (255,255,255);
可以在没有任何警告或错误的情况下编译。
为什么?这么奇怪?谢谢。
参考:
【问题讨论】:
正确的用法是:
COLORREF COLOR = RGB (255,255,255);
但是,这个
COLORREF COLOR = (255,255,255);
可以在没有任何警告或错误的情况下编译。
为什么?这么奇怪?谢谢。
【问题讨论】:
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。
【讨论】:
typedef struct _COLORREF { BYTE RED, BYTE GREEN, BYTE BLUE } COLORREF;我认为将 COLORREF 声明为结构要好得多,不是吗?