看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《showken (梟仔)》之銘言: : 小弟最近在寫TI DSP 2808的晶片程式,遇到如下問題想請教各位 : struct 16bits : { : unsigned int cyan :1; //bit 0 : unsigned int yellow :1; //bit 1 : ... : unsigned int black :1; //bit 15 : }; : union colorData : { : unsigned int colorBuf; : struct 16bits colorbits; : }; : ------------------------------------------------------ : union colorData myColor; : dosomething... : dosomething... : dosomething... : if (myColor.colorBuf & 0x0003) <==== : { : printf("green"); : } : ------------------------------------------------------- : 想請教大家一下,若是我以後想修改最上面結構bit的位置, : 譬如bit0跟bit15互換,但又不想每次修改的時候 : 都去修改箭頭所指的if判斷式,除了下列 : if (myColor.colorbits.cyan && myColor.colorbits.yellow) : 這樣寫以外,還有什麼其他的方法嗎? #define COLOR_CYAN 0x01 #define COLOR_YELLOW 0x02 ... #define COLOR_BLACK 0x80 #define COLOR_GREEN (COLOR_CYAN | COLOR_YELLOW) // green是不是cyan跟yellow的混色? unsigned int myColor; if (colorBuf == COLOR_GREEN) // & 改成 == { printf("green"); } 是這樣嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.122.249.1