2016-05-19 7 views
0

どのようにしてmsvc標準ライブラリをプリプロセッサで確実に検出できますか?msvc標準ライブラリを検出する

_MSC_VERをチェックしているmsvcコンパイラではなく、このライブラリを利用している別のコンパイラはありますか?

私はmingwの-W64

これだけの学術問題のmingwの中__MINGW32____MINGW64_VERSION_MAJORのような特定のプリプロセッサマクロを探しています。

+0

コンパイル済みオブジェクトでこれを検出する方法があるかどうか尋ねていますか? (.lib、.dll、.so、.o、.exe、whatever) – vu1p3n0x

+0

MSVCRT.DLLにリンクされた実行ファイルを作成するmingw-gccのようなケースについて話していますか? –

+0

これはちょうど学問的な質問なので、私はちょうどそれをドロップすることをお勧めします。あなたが望むことをするための信頼できる方法(私が知っている)はありません。そして、なぜ最初にしたいですか?コンパイラとその標準ライブラリはかなり緊密に結合されています。他のものと1つを使用しようとしません。 –

答えて

1

まず、別のコンパイラでmsvcライブラリをコンパイルしないでください。msvcコンパイラの動作に依存し、定義します。

第2に、テストに使用できるすべてのmsvc標準ライブラリヘッダーには何もありません。たとえそれがあったとしても、実装が定義され、別の標準ライブラリ実装によって定義されることもあります。

これは、#include <iostream>が普段と同じくらい近いことを示しています。あなたは、このファイルを見渡すことができます。たとえば、_IOSTREAM_です。

+0

msvcライブラリを使用できますが、いくつかの特定のフラグがあり、msvcコンパイラをエミュレートしようとしています。 http://clang.llvm.org/docs/MSVCCompatibility.html –

+0

ここに共通の解決策がない場合は、より良い方法です。 –

+0

あなたはどのコンパイラがライブラリを使用しているかを判断しようとしていますか?そうであれば、 '_MSC_VER'はあなたが望むものです。これは標準的な実装ではなくコンパイラによって定義されています:https://msdn.microsoft.com/en-us/library/b0084kay.aspx –

関連する問題