1

私たちの会社では、古いWMのプロジェクト(Embedded Visual C ++ 3.0などを使用)や最新のコード(VS 2010)で使用される.cppファイルと.hファイルを作成することがあります。

このEmbeddedVisualC++はSTLをサポートしていません。

したがって、VS2010で作業している開発者の1人が、共有されているファイルを変更し、たとえばstd :: vectorを使用する関数を追加した場合、彼の側ではすべて問題ありませんが、ビルド(非常に長い) )失敗します。

ですから、この間違いをもっと早く見るために、次のようなものを追加したいと思います。

#if defined(%%STL%%)
#error("!!!!")
#endif

古いツールセットでコンパイルされたすべてのファイル。この場合、開発者はVS2010でもコンパイル時エラーを確認できます。

しかし、代わりに%%STL%%を配置できるものが見つかりませんでした。

何か案は?または多分誰かが私がこれを行うことができるより良い方法を知っていますか?

4

2 に答える 2

1

かなり良い解決策があります(少なくとも私は落とし穴を見ません)

%%STL%%_STD_BEGINである必要があります

このマクロは、VSstl実装の「namespacestd{」に使用されます

于 2012-11-07T22:18:31.083 に答える
1

質問へのコメントに基づいて、サポートされていない各ヘッダーファイルを調べて、インクルードガードにどのシンボルが定義されているかを確認できます。次に、それらのシンボルが定義されているかどうかを確認します。

EG Microsoft C ++ヘッダーは、次のことを確認できるように<algorithm>定義しています。_ALGORITHM_

#ifdef _ALGORITHM_
#error("<algorithm> included")
#endif

これらの束を収集して単一のヘッダーファイルに入れ、最後に各共有ソースファイルに含めることができます。

于 2012-11-07T21:24:13.510 に答える