我目前正在尝试将googletest与MinGW和-std=c++0x
一起使用,但它抱怨_stricmp is not declared in this scope
当我不使用-std=c++0x
时它不会。
我不知道_stricmp
是什么,我发现它是在cstring/string.h
中定义的,为什么它在C ++ 0x中消失了?
答案 0 :(得分:23)
-std=c++0x
选项导致g ++进入'严格ANSI'模式,因此它不会声明非标准函数(并且_stricmp()
是非标准的 - 它只是{{1}的版本那不区分大小写。)
改为使用strcmp()
。
答案 1 :(得分:6)
除了迈克尔的解决方案之外,还有其他方法可以覆盖strict ANSI
模式。在包含编译问题的文件中包含以下内容之前包括以下内容:
#ifdef __STRICT_ANSI__
#undef __STRICT_ANSI__
#endif
这不仅有助于_stricmp
使用其他常用功能,例如swptintf
,vswprintf
和simmilar。
答案 2 :(得分:0)
您可以看看MinGW-w64,它使我可以使用-std = c ++ 11(也可以与-std = c ++ 0x一起运行)运行Google测试。它消除了_stricmp,_strdup等问题。