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