位定義,用於判斷是否包含某屬性

2022-03-26 14:32:43 字數 1469 閱讀 5960

很多時候,物件有很多屬性,我們可以增刪物件的屬性的支援,這時候,位定義是比較好解決問題的。

我們想加上ws_vscroll屬性的常用寫法

dowrd ws_old = getwindowlonga(hwnd,gwl_style);  //獲取目前屬性

ws_old |=ws_vscroll;

或者去掉ws_vscroll屬性

ws_old &=~ws_vscroll;

判斷時候具有ws_vscroll屬性

if(ws_old & ws_vscroll)

用起來十分方便,那麼如何進行位定義呢?

方法一:用enum

enum class window_style: char  //大小可以按照需求更改        

ws_base=1,

ws_border=       ws_base<<2,

ws_dlgframe=   ws_base<<3,

ws_vscroll=      ws_base<<4,

ws_hscroll=       ws_base<<5

優點:型別保護,除錯更清楚

缺點:無法直接進行位操作。

2、用define

#define  ws_base   1

#define   ws_border           (ws_base<<2)

#define    ws_dlgframe     (ws_base<<3)

#define    ws_vscroll        (ws_base<<4)

#define   ws_hscroll         (ws_base<<5)

優點:可以直接進行位運算

缺點:移位操作符的優先順序很低,必須加括號保護

3、用define與16進製制

#define  ws_base                  1

#define   ws_border           4

#define    ws_dlgframe     8

#define    ws_vscroll       0x10

#define   ws_hscroll        0x20

優點:可以直接進行位運算

缺點:排列不整齊,可以稍微改進下

#define  ws_base                  0x0001

#define   ws_border           0x0004

#define    ws_dlgframe     0x0008

#define    ws_vscroll        0x0010

#define   ws_hscroll         0x0020

是不是舒服很多。。。      附windows的定義

iOS開發 判斷NSString是否包含某個字串

主要用到三種方法來判斷 rangeofstring 是否包含 hasprefix 是否在字首包含 hassuffix 是否在末尾包含 判斷字元是否包含某字串 nsstring string hello,shenzhen,martin 字條串是否包含有某字串 if string rangeofstri...

判斷js物件是否擁有某屬性

兩種方式,但稍有區別 1,in 運算子1 2 3 varobj alert name inobj true alert tostring inobj true 可看到無論是name,還是原形鏈上的tostring,都能檢測到返回true。2,hasownproperty 方法1 2 3 varobj...

判斷JS物件是否擁有某屬性

兩種方式,但稍有區別 1,in 運算子 var obj alert name in obj true alert tostring in obj true 可看到無論是name,還是原形鏈上的tostring,都能檢測到返回true。2,hasownproperty 方法 var obj obj.h...