[問題] 列舉型別enum
hi,各位好。小弟在看header file的時候看到以下定義:
* enum CAN_TX_MSG_FLAGS
*
* This enumeration values define flags related to transmission of a
* CAN message. There could be more than one this flag
* ANDed together to form multiple flags.
enum CAN_TX_MSG_FLAGS
{
CAN_TX_PRIORITY_BITS= 0b00000011,
CAN_TX_PRIORITY_0 = 0b11111100, // XXXXXX00
CAN_TX_PRIORITY_1 = 0b11111101, // XXXXXX01
CAN_TX_PRIORITY_2 = 0b11111110, // XXXXXX10
CAN_TX_PRIORITY_3 = 0b11111111, // XXXXXX11
CAN_TX_FRAME_BIT = 0b00001000,
CAN_TX_STD_FRAME = 0b11111111, // XXXXX1XX
CAN_TX_XTD_FRAME = 0b11110111, // XXXXX0XX
CAN_TX_RTR_BIT = 0b01000000,
CAN_TX_NO_RTR_FRAME = 0b11111111, // X1XXXXXX
CAN_TX_RTR_FRAME = 0b10111111 // X0XXXXXX
};
不太能意會這一小段程式碼與註解的關係。
This enumeration values define flags related to transmission of a CAN message.
There could be more than one this flag ANDed together to form mutiple flags.
請問這兩句話是什麼意思?
據我所知flag不就是一個bit?如果bit預設是0,由於觸發了某個動作,經由硬體觸發此bit
使它變成1。所以programmer可以利用此flag去判讀動作觸發了沒。
但enum裡面的識別字的值不是我們自己定義的嗎?定義完後就是定值了吧?還可以當flag使
用嗎?
以CAN_TX_PRIORITY_0為例子。為什麼要把值定義成0b11111100,不能定義成0b00000000呢
?註解後面用X表示不就是代表可以為0或者1嗎?
接著,列舉裡面的識別字跟其他識別字作and。是指什麼意思呢?
舉個例,CAN_TX_PRIORITY_BITS跟CAN_TX_PRIORITY_0做and後,會變成0b00000000,這代
表甚麼意思呢?
謝謝各位指點。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.26.157
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1504087553.A.A73.html
※ 編輯: zzss2003 (60.248.26.157), 08/30/2017 18:06:25
推
08/30 18:28, , 1F
08/30 18:28, 1F
→
08/30 18:28, , 2F
08/30 18:28, 2F
→
08/30 18:28, , 3F
08/30 18:28, 3F
→
08/30 18:29, , 4F
08/30 18:29, 4F
→
08/30 18:30, , 5F
08/30 18:30, 5F
→
08/30 18:32, , 6F
08/30 18:32, 6F
→
08/30 18:33, , 7F
08/30 18:33, 7F
推
08/30 18:34, , 8F
08/30 18:34, 8F
推
08/30 18:47, , 9F
08/30 18:47, 9F
推
08/30 22:46, , 10F
08/30 22:46, 10F
→
08/30 22:47, , 11F
08/30 22:47, 11F
推
08/31 01:05, , 12F
08/31 01:05, 12F
→
08/31 01:06, , 13F
08/31 01:06, 13F
→
08/31 01:08, , 14F
08/31 01:08, 14F
推
08/31 13:24, , 15F
08/31 13:24, 15F
→
08/31 13:24, , 16F
08/31 13:24, 16F
→
08/31 14:45, , 17F
08/31 14:45, 17F
→
08/31 14:46, , 18F
08/31 14:46, 18F
→
08/31 14:46, , 19F
08/31 14:46, 19F
→
08/31 14:59, , 20F
08/31 14:59, 20F
→
08/31 15:14, , 21F
08/31 15:14, 21F
→
08/31 16:36, , 22F
08/31 16:36, 22F
→
08/31 16:36, , 23F
08/31 16:36, 23F
→
08/31 20:03, , 24F
08/31 20:03, 24F
→
08/31 20:03, , 25F
08/31 20:03, 25F
推
08/31 20:48, , 26F
08/31 20:48, 26F
→
08/31 20:50, , 27F
08/31 20:50, 27F
→
08/31 20:51, , 28F
08/31 20:51, 28F
→
08/31 20:51, , 29F
08/31 20:51, 29F
→
08/31 20:52, , 30F
08/31 20:52, 30F
→
08/31 21:27, , 31F
08/31 21:27, 31F
討論串 (同標題文章)