来自 gcc 手册: http: //gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Alternate-Keywords.html#Alternate-Keywords
-pedantic 和其他选项会导致许多 GNU C 扩展出现警告。您可以通过在表达式前写 __extension__ 来防止在一个表达式中出现此类警告。__extension__ 除此之外没有任何影响。
我刚刚使用 -Wall -Wextra -Wpedantic 和 gcc-4.8.2 编译了以下块,并且没有打印警告:
static uint8_t shbl[2][9] = {
{ __extension__ 0b11111111,
__extension__ 0b11111110,
__extension__ 0b11111100,
__extension__ 0b11111000,
__extension__ 0b11110000,
__extension__ 0b11100000,
__extension__ 0b11000000,
__extension__ 0b10000000,
__extension__ 0b00000000 },
// BLOCK_RIGHT
{ __extension__ 0b11111111,
__extension__ 0b01111111,
__extension__ 0b00111111,
__extension__ 0b00011111,
__extension__ 0b00001111,
__extension__ 0b00000111,
__extension__ 0b00000011,
__extension__ 0b00000001,
__extension__ 0b00000000 }
};
(Of course this is ugly, and I'll change that to a precompiler macro. But for a test it was acceptable.)