Everything
11.3 ビット操作命令の出力を制御する方法 【V1.05.00以降】

組み込み関数を使用せずにビット操作命令を出力したい場合は,次の条件をすべて満たしてください。

(a)

定数値を代入する

(b)

代入先を1バイト型で1ビット幅のビットフィールドにする

(c)

代入先をvolatile 修飾する

 

ビット操作命令を出力したくない場合は,上記の(c)を満たしたうえで,(a)の代入値を定数値以外にするか,または(b)の型を1バイト型以外の型にしてください。

上記のいずれにも該当しない場合,ビット操作命令を出力するかどうかは,最適化レベルやソース・プログラムの記述内容によってコンパイラが自動的に判別します。

注意

1バイト型は,(char/unsigned char/signed char/_Bool)を指します。

 

volatile struct {
  unsigned char bit0:1;
  unsigned int  bit1:1;
} data;
 
void func(void) {
  data.bit0 = 1;  /* ビット操作命令を出力する */
  data.bit1 = 1;  /* ビット操作命令を出力しない */
}