_stricmp与mingw和c ++ 0x不存在?

时间:2011-06-10 21:16:01

标签: c++ c++11 mingw googletest

我目前正在尝试将googletest与MinGW和-std=c++0x一起使用,但它抱怨_stricmp is not declared in this scope当我不使用-std=c++0x时它不会。 我不知道_stricmp是什么,我发现它是在cstring/string.h中定义的,为什么它在C ++ 0x中消失了?

3 个答案:

答案 0 :(得分:23)

-std=c++0x选项导致g ++进入'严格ANSI'模式,因此它不会声明非标准函数(并且_stricmp()是非标准的 - 它只是{{1}的版本那不区分大小写。)

改为使用strcmp()

答案 1 :(得分:6)

除了迈克尔的解决方案之外,还有其他方法可以覆盖strict ANSI模式。在包含编译问题的文件中包含以下内容之前包括以下内容:

#ifdef __STRICT_ANSI__
#undef __STRICT_ANSI__
#endif

这不仅有助于_stricmp使用其他常用功能,例如swptintfvswprintf和simmilar。

答案 2 :(得分:0)

您可以看看MinGW-w64,它使我可以使用-std = c ++ 11(也可以与-std = c ++ 0x一起运行)运行Google测试。它消除了_stricmp,_strdup等问题。