2007年10月25日

?:とif,elseでは何が違うのか?

by 後輩

 ・・すみません。私にはメリット・デメリットの良い回答ができませんでした・・orz

書籍によっては、推奨していなかったりしますね。(私の持ってるCの本では)
「?:を使うくらいなら、if,elseを使いましょう」みたいな。

んー、どうなんでしょうね?自分としてはコードがすっきりするかな、程度なんだけど。
他にもの凄いメリットとか、デメリットがあったりするのかなあ?

2007年10月23日

ビットフィールドアクセスの共通化

汎用ポートのアクセスに、ビットフィールドを利用していたんだけど
ポートの番号とビットの番号(意味わかるかなあ?)を指定して
目的のデータビットにアクセスする処理を作ることになって。

(個人的には(せっかく?)定義されてるビットフィールドを
 無駄にする気がしてしかたがないのだけれど。)



ーー(省略)ーー
struct st_p1 {
  union {
  unsigned char BYTE;
struct {
  unsigned char B7:1;
unsigned char B6:1;
unsigned char B5:1;
unsigned char B4:1;
unsigned char B3:1;
unsigned char B2:1;
unsigned char B1:1;
unsigned char B0:1;
} BIT;
}DR;
}
ーー(省略)ーー
#define P1(*(volatile struct st_p1 *)ポートのアドレス);
#define P2(*(volatile struct st_p2 *)ポートのアドレス);
#define P3(*(volatile struct st_p3 *)ポートのアドレス);

ーー(省略)ーー


↑みたいな構造体を使ってアクセスしてたのを、
ポート番号、ビット番号を指定して共通の関数で
アクセスするように変更するんだけど・・・

P1.DR.BIT.B1= ON、をSetPort(PORT1,BIT1,ON);こんな感じ?

続きを読む "ビットフィールドアクセスの共通化"