为什么GCC在使用WinAPI时不报告任何错误或警告:COLORREF / RGB?

时间:2013-11-24 13:40:25

标签: c winapi mingw32

正确用法是:

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

但是,这个

COLORREF COLOR = (255,255,255);

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

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

参考:

  1. COLORREF

  2. RGB()

1 个答案:

答案 0 :(得分:2)

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。