Я искал повсюду, и информация в сети, кажется, предполагает, что условная компиляция с использованием препроцессора работает исключительно с переменными среды.
В принципе, я хотел бы, чтобы встроенная функция или макрос выполняли различные операции в зависимости от своих входных аргументов.Пример того, чего я хочу достичь:
inline void foo(int x) {
#if (x < 32)
register0 |= (1 << x);
#else
register1 |= (1 << (x - 32));
#endif
}
Основная цель здесь состоит в том, чтобы полученный встроенный код не содержал условного кода для постоянных входов.
В основном, я сейчас программирую для микроконтроллера (lpc213x) и хотел бы иметь встроенную функцию или макрос для настройки конфигурации контактов. Поскольку конфигурации выводов разделены на несколько регистров (например, 0 и 1 выше), я хотел бы выполнить некоторые условные проверки, чтобы решить, в какой регистр должна быть произведена запись для данной константы вывода.
Однако все конфигурации выводов постоянны во время компиляции, поэтому я хотел бы исключить условные проверки из кода компиляции. Я знаю, что оптимизация, скорее всего, в любом случае избавит от ненужных условных выражений, но мне интересно, есть ли способ добиться такого поведения явно, потому что мне может потребоваться отключить оптимизацию в будущем.
Спасибо,
FRob