[問題] struct用法

看板C_and_CPP (C/C++)作者 (怪頭)時間15年前 (2010/10/01 15:59), 編輯推噓7(709)
留言16則, 4人參與, 最新討論串1/1
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) C 各位大大們好... 小弟剛學C不久~在使用struct上有點小問題 以下是我的程式 struct Flag{ unsigned UART_Rx_OK:1; unsigned UART_Start:1; unsigned UART_Show_EEPROM:1; }FLAGbits; 想要問的問題是..請問要如何define 能夠一次選擇這三個bits UART_Rx_OK; UART_Start:1; UART_Show_EEPROM:1; 意思就是..假設在 main裡面打FLAG=0 那麼 UART_Rx_OK; UART_Start:1; UART_Show_EEPROM:1; 看到的值都等於0.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.45.193

10/01 16:01, , 1F
跟2進位有關係
10/01 16:01, 1F

10/01 16:02, , 2F
define 成1,2,4,8,16,32,64,128...用|去做flag
10/01 16:02, 2F

10/02 00:00, , 3F
如果struct就像這樣的話, 應該可以用union去實作@_@"
10/02 00:00, 3F

10/02 00:32, , 4F
union這個東西連我學了很久的c都不知道怎麼用
10/02 00:32, 4F

10/02 00:33, , 5F
Windows 內部一些資料結構,省空間省得要死,都用union
10/02 00:33, 5F

10/02 00:34, , 6F
用 windbg 觀察 process 就會看到
10/02 00:34, 6F

10/02 00:38, , 7F
算特定欄位的記憶體位址時討厭碰到union
10/02 00:38, 7F

10/02 00:41, , 8F
疑?? 別搞太複雜的東西的話, union沒那麼複雜難懂呀@_@"
10/02 00:41, 8F

10/02 00:42, , 9F
像driver讀寫MMIO reg時, 或者要直接下CMD時, 應該還滿
10/02 00:42, 9F

10/02 00:43, , 10F
常見到的說@_@" 簡單寫一個assign, 就可以處理掉那些本
10/02 00:43, 10F

10/02 00:43, , 11F
來可能要condition或分開assign好幾次的東西@_@"
10/02 00:43, 11F

10/02 00:45, , 12F
比較嘔的是, 哪個HW define reg在跨DWORD的連續幾個bit
10/02 00:45, 12F

10/02 00:45, , 13F
時, 處理它就會想砍人....-_-||
10/02 00:45, 13F

10/02 00:45, , 14F
因為process用到的資料結構有些還蠻大的,用一堆union
10/02 00:45, 14F

10/02 00:46, , 15F
不容易馬上看出相對位置
10/02 00:46, 15F

10/02 00:51, , 16F
不知道能不能直接&或套OFFSET macro....XDD
10/02 00:51, 16F
文章代碼(AID): #1CfPJlQP (C_and_CPP)
文章代碼(AID): #1CfPJlQP (C_and_CPP)