質問

私は現在、Mingw AndでGoogletestを使用しようとしています -std=c++0x しかし、それはそれを不平を言っています _stricmp is not declared in this scope 私が使用しないときはそうではありません -std=c++0x。何がわかりません _stricmp 私はそれがで定義されていることを知ったばかりです cstring/string.h, 、では、なぜC ++ 0xで消えたのですか?

役に立ちましたか?

解決

-std=c++0x オプションにより、g ++は「厳密なANSI」モードに移動するため、標準以外の関数を宣言しません(および _stricmp() 非標準です - それは単なるバージョンです strcmp() それはケースに依存しない)。

使用する -std=gnu++0x 代わりは。

他のヒント

マイケルによる解決に加えて、オーバーライドする他の方法があります strict ANSI モード。コンピレーションの問題を伴うファイルに含まれる前に、以下を含めます。

#ifdef __STRICT_ANSI__
#undef __STRICT_ANSI__
#endif

これはだけではありません _stricmp 他の一般的な関数もあります swptintf, vswprintf と同時。

あなたは見ることができます MINGW-W64, 、-std = c ++ 11でGoogleテストを実行することができました(-std = c ++ 0xでも動作します)。 _stricmp、_strdupなどの問題を排除します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top