例えば、
arch/arm/mach-rpc/irq.c にある、以下のようなコード。
switch (irq) {
case 0 ... 7:
irq_set_chip_and_handler(irq, &iomd_a_chip,
handle_level_irq);
set_irq_flags(irq, flags);
break;
case 8 ... 15:
irq_set_chip_and_handler(irq, &iomd_b_chip,
handle_level_irq);
set_irq_flags(irq, flags);
break;
case 16 ... 21:
irq_set_chip_and_handler(irq, &iomd_dma_chip,
handle_level_irq);
set_irq_flags(irq, flags);
break;
case 64 ... 71:
irq_set_chip(irq, &iomd_fiq_chip);
set_irq_flags(irq, IRQF_VALID);
break;
}
「...」で範囲指定できるらしい。見た時びっくりしました。
gcc のマニュアルを参照すると
http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/C-Extensions.html#C-Extensions
これはGNU 拡張機能らしいです。
(Case Ranges: `case 1 ... 9' and such. )
gcc に -pedantic をつけると非標準機能を使っていると警告してくれるみたい。
ポータビリティを気にする場合は便利かも。
上のような書き方をすると
警告: range expressions in switch statements are non-standard
という風に warning 出してくれました。
http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/C-Extensions.html#C-Extensions
これはGNU 拡張機能らしいです。
(Case Ranges: `case 1 ... 9' and such. )
gcc に -pedantic をつけると非標準機能を使っていると警告してくれるみたい。
ポータビリティを気にする場合は便利かも。
上のような書き方をすると
警告: range expressions in switch statements are non-standard
という風に warning 出してくれました。
0 件のコメント:
コメントを投稿