带有mingw和c++0x的_stricmp不存在?

42fyovps  于 2023-01-03  发布在  其他
关注(0)|答案(4)|浏览(147)

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

sxpgvts3

sxpgvts31#

-std=c++0x选项使g++进入“strict ANSI”模式,这样它就不会声明非标准函数(_stricmp()是非标准的--它只是strcmp()的一个不区分大小写的版本)。
请改用-std=gnu++0x

oymdgrw7

oymdgrw72#

除了Michael的解决方案外,还有其他方法可以覆盖strict ANSI模式。在出现编译问题的文件中的任何include之前包含以下内容:

#ifdef __STRICT_ANSI__
#undef __STRICT_ANSI__
#endif

这不仅对_stricmp有帮助,对swptintfvswprintf和simmilar等其他常见函数也有帮助。

2izufjch

2izufjch3#

您可以查看一下MinGW-w64,它允许我使用-std=c11运行Google测试(也适用于您的-std=c0x),它消除了_stricmp、_strdup等的问题。

8ljdwjyq

8ljdwjyq4#

我也遇到过同样的问题,但对我来说,我有一个包含路径中的文件String.h,它被预处理器拾取并代替标准的文件使用。

相关问题