Ответ на ваш вопрос - нет, у Ada нет встроенного в язык препроцессора. Это означает, что каждый компилятор может иметь или не иметь его, и не существует «единого» синтаксиса для предварительной обработки и таких вещей, как условная компиляция. Это было преднамеренно: это считается "вредным" для идеала Ады.
Почти всегда есть способы обойтись без препроцессора, но часто решение может быть немного громоздким. Например, вы можете объявить специфичные для платформы функции как «отдельные», а затем использовать инструменты компиляции для компиляции правильной (или системы проекта, с использованием замены тела прагмы, или очень простой системы каталогов ... поместите все файлы Windows в / windows / и все файлы linux в / linux / и включают соответствующий каталог для платформы).
После всего этого, GNAT понял, что иногда вам нужен препроцессор, и создал gnatprep. Он должен работать независимо от компилятора (но вам нужно будет вставить его в процесс сборки). Точно так же для простых вещей (например, условной компиляции) вы, вероятно, можете просто использовать препроцессор c или даже свернуть свой собственный очень простой.