私は、標準 C++ コンパイラと先行標準コンパイラの両方でコンパイルできる必要があるユーティリティに取り組んでいます。このコードは、存在するほぼすべての C++ コンパイラでスローされる可能性があり、スローされることになります。
ターゲット コンパイラが .h 拡張子の有無にかかわらずヘッダー ファイルをサポートしているかどうかを確実かつ移植可能に判断する手段を探しています。名前空間がサポートされているかどうかも検出する必要があります。これらのニーズは両方とも、可能である場合と不可能である場合があります。
ちょっとした背景: このユーティリティは、Perl の Inline::CPP 言語拡張です。拡張子には自動的に が含まれ<iostream>
、「.h」が必要かどうか (そしてもちろん、コンパイラが名前空間をサポートしているかどうか) を適切に推測しようとします。しかし、その点では完全とは言えず、この問題によりユーティリティの有用性の幅が狭まります。
質問を繰り返します。コンパイラが など<iostream>
の標準ヘッダーまたは などの標準化前のヘッダーをサポートしているかどうかを移植可能に検出するにはどうすればよい<iostream.h>
ですか?