Увы, как вы знаете, идентификаторы C чувствительны к регистру. Следовательно, символы препроцессора - то же самое (если один из них чувствителен к регистру, а другой - нет, вы можете получить очень странное поведение, если намереваетесь изменить только один из символов препроцессором). Для этого поведения нет ни флага переопределения, ни альтернативной конструкции define
(по крайней мере, я знаю об этом во внешних интерфейсах компилятора GCC для C /++).
Наиболее очевидным решением будет grep
ваш код для foobar
без учета регистра. Используйте результаты, чтобы составить таблицу всех возможных оболочек foobar и либо
- Исправьте их все в один последовательный корпус
- Создайте один файл препроцессора, который выполняет переопределения для всех случаев.
В последующем решении вам не нужно загрязнять некоторый читабельный человеком код - просто создайте файл FixFooBar.h
, полный этих преобразований, и включите его при необходимости.