Я работаю над утилитой, которая должна быть способной компилироваться как на стандартных компиляторах C ++, так и на стандартных компиляторах. Код может и будет брошен практически на любой существующий компилятор C ++.
Я ищу способ надежно и точно определить, поддерживает ли целевой компилятор заголовочные файлы с расширением .h или без него. Мне также необходимо определить, поддерживаются ли пространства имен. Обе эти потребности могут или не могут быть возможны.
Немного предыстории: Утилита является расширением языка Inline :: CPP для Perl. Расширение автоматически включает <iostream>
и пытается правильно угадать, требуется ли «.h» или нет (и, конечно, поддерживает ли компилятор пространства имен). Но это далеко от совершенства в этом отношении, и эта проблема уменьшает широту полезности утилиты.
Итак, еще раз повторю вопрос: как мне определить, поддерживает ли компилятор стандартные заголовки, такие как <iostream>
, или стандартные заголовки, такие как <iostream.h>
?