2012-01-14 6 views
4

私はC++ 11ライブラリを作成しており、C++ 11をサポートするすべてのコンパイラで動作させたいと思います。私は、標準ではないコード(例えば、VLAやブロックなどの言語拡張機能を使用している)を間違って記述したくはありません。どのようにして、すべての言語拡張機能を無効にするようにclangに強制して、適合コードのみを書くことができますか?コードが標準に厳密に準拠していない場合、どうやってclangにエラーを投げることができますか?

+0

私はあなたができるとは思いません。標準で要求されるすべての診断をハードエラーにすることができます(GCCで '-pedantic-errors'、clangでも採用されていると思います)。しかし、言語拡張を行わないと標準ヘッダーの一部を実装できないので、すべての拡張子は、もはやそれらのヘッダを使用することはできません... – hvd

+1

clangはシステムヘッダ( '-pedantic-errors'や' -Werror'でエラーに昇格したものさえも)内に警告を出しません。 '-pedantic-errors'を有効にすると、標準のヘッダが表示されます。 –

答えて

7

one of theseをお試しください:

-pedantic: Warn on language extensions. 

-pedantic-errors: Error on language extensions. 
関連する問題