В основном мне нужно что-то вроде этого:
#if (sizeof(int) * CHAR_BIT) == 32
INT_MASKS[32] = {
0x00000001, 0x00000003, 0x00000007, 0x0000000F,
0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF,
...
};
#elif (sizeof(int) * CHAR_BIT) == 64
INT_MASKS[64] = {
0x0000000100000001, 0x0000000300000003, 0x0000000700000007, 0x0000000F0000000F,
0x0000001F0000001F, 0x0000003F0000003F, 0x0000007F0000007F, 0x000000FF000000FF,
...
};
#else
#error unsupported architecture
#endif;
В каждой ветке #if #else более одного массива, поэтому рабочий эквивалент сэкономил бы мне много места. Кроме того, некоторые массивы содержат множество выражений, которые я хотел бы оценить во время компиляции. Спасибо за любой ответ.