看來我的腦子還不夠指標化....
內容就不多做解釋,看的懂得就看的懂,直接跳過這篇也沒關係XD。所有寫法的結果當然都是相同的。
究極愚蠢寫法....
Pattern 1:
setting =
sDIOconfigs.bLine01*1 |sDIOconfigs.bLine02*2
|sDIOconfigs.bLine03*4 |sDIOconfigs.bLine04*8
|sDIOconfigs.bLine05*16 |sDIOconfigs.bLine06*32
|sDIOconfigs.bLine07*64 |sDIOconfigs.bLine08*128
|sDIOconfigs.bLine09*256 |sDIOconfigs.bLine10*512
|sDIOconfigs.bLine11*1024 |sDIOconfigs.bLine12*2048
|sDIOconfigs.bLine13*4096 |sDIOconfigs.bLine14*8192
|sDIOconfigs.bLine15*16384|sDIOconfigs.bLine16*32768
|sDIOconfigs.bLine17*65536|sDIOconfigs.bLine18*131072
|sDIOconfigs.bLine19*262144|sDIOconfigs.bLine20*524288
|sDIOconfigs.bLine21*1048576|sDIOconfigs.bLine22*2097152
|sDIOconfigs.bLine23*4194304|sDIOconfigs.bLine24*8388608;
daq_Config_DIO24(setting);
實在太蠢了,寫漂亮一點。
Pattern 2:
setting =
(UINT32)sDIOconfigs.bLine01<<0 |((UINT32)sDIOconfigs.bLine02<<1)|
((UINT32)sDIOconfigs.bLine03<<2) |((UINT32)sDIOconfigs.bLine04<<3)|
((UINT32)sDIOconfigs.bLine05<<4) |((UINT32)sDIOconfigs.bLine06<<5)|
((UINT32)sDIOconfigs.bLine07<<6) |((UINT32)sDIOconfigs.bLine08<<7)|
((UINT32)sDIOconfigs.bLine09<<8) |((UINT32)sDIOconfigs.bLine10<<9)|
((UINT32)sDIOconfigs.bLine11<<10)|((UINT32)sDIOconfigs.bLine12<<11)|
((UINT32)sDIOconfigs.bLine13<<12)|((UINT32)sDIOconfigs.bLine14<<13)|
((UINT32)sDIOconfigs.bLine15<<14)|((UINT32)sDIOconfigs.bLine16<<15)|
((UINT32)sDIOconfigs.bLine17<<16)|((UINT32)sDIOconfigs.bLine18<<17)|
((UINT32)sDIOconfigs.bLine19<<18)|((UINT32)sDIOconfigs.bLine20<<19)|
((UINT32)sDIOconfigs.bLine21<<20)|((UINT32)sDIOconfigs.bLine22<<21)|
((UINT32)sDIOconfigs.bLine23<<22)|((UINT32)sDIOconfigs.bLine24<<23);
daq_Config_DIO24(setting);
前輩看到後說改成這樣就好....
Pattern 3:
daq_Config_DIO24(*(UINT32 *)(&sDIOconfigs.u16SubIndex0 + 1));
............對不起我真的沒想那麼多(倒地),當然這是變數結構上剛好有可以取巧的空間,不過沒想到就是沒想到Orz
丟給專職寫Java的同學看,他的反應是....
友:"我想你還是至少把第二種當註解留著,不然以後誰看的懂啊!"
我:"...............原來舊版還有註解效果是吧?"
雖然說在這之前我的實戰語言換來換去都不是C/C++,所以還沒有寫出漂亮的短碼的本能,現在有種瞬間打通的感覺。
tag :
