Это больше СУХОЙ , то есть менее повторяющееся, чтобы быть немного умнее:
#define OCTAVES 4
/*define OCTAVES 5 */
const unsigned char borders [] = {11, 26, 50, 98,
#if OCTAVES == 5
194
#endif
};
Таким образом, вам не нужно, чтобы четыре первых значения были одинаковыми в двух «ветвях» кода.
Или, если вы обнаружите это оскорбление, выделите его в макрос и повторите вместо этого:
#define BORDERS4 11, 26, 50, 98
#if OCTAVES == 4
const unsigned char borders[] = { BORDERS4 };
#else if OCTAVES == 5
const unsigned char borders[] = { BORDERS4, 198 };
#endif