21

私は現在、MinGW で googletest を使用しようとしていますが、使用しない場合はそうではない-std=c++0xと文句を言います。で定義されていることがわかりましたが、なぜ C++0x でなくなったのですか?_stricmp is not declared in this scope-std=c++0x_stricmpcstring/string.h

4

3 に答える 3

24

この-std=c++0xオプションにより、g++ は「厳密な ANSI」モードになるため、非標準関数は宣言されません (そして非標準です -大文字と小文字を区別しない_stricmp()バージョンにすぎません)。strcmp()

-std=gnu++0x代わりに使用してください。

于 2011-06-10T21:43:00.100 に答える
7

マイケルによる解決策に加えて、モードをオーバーライドするための他の方法がありstrict ANSIます。コンパイルに問題があるファイルにインクルードする前に、次をインクルードします。

#ifdef __STRICT_ANSI__
#undef __STRICT_ANSI__
#endif

これは、 、および類似_stricmpのような他の一般的な機能だけでなく、役立ちます。swptintfvswprintf

于 2013-05-09T22:52:42.843 に答える