[[fallthrough]]属性について

[[fallthrough]]属性は、case文に1行も処理を書いていない部分だと意味はない。

switch(param){
  case 0:
    a = b;
    break;
  case 1:
    [[fallthrough]] // case文に処理が1行も書かれていないので、コンパイラによって無視されるの意味なし。
  default:
    b = c;
    break;
}
switch(param){
  case 0:
    a = b;
    break;
  case 1:
    a = c;
    [[fallthrough]] // こういう形ならbreak文を設定していないのは意図的という意味がある。
  default:
    b = c;
    break;
}

fallthrough属性は、2つのケース文をつなげるという意味があるので、何も書いていないケース文はfallthroughとはいわないらしい。
まだ、理解が浅いので、わかったら追記する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です