_stricmp with mingw 和 c++0x 不存在?
Posted
技术标签:
【中文标题】_stricmp with mingw 和 c++0x 不存在?【英文标题】:_stricmp with mingw and c++0x not existent? 【发布时间】:2011-06-10 21:16:00 【问题描述】:我目前正在尝试将 googletest 与 MinGW 和 -std=c++0x
一起使用,但它抱怨 _stricmp is not declared in this scope
当我不使用 -std=c++0x
时它不会。
我不知道_stricmp
是什么,我才发现是在cstring/string.h
里面定义的,那为什么在C++0x里没了?
【问题讨论】:
【参考方案1】:-std=c++0x
选项导致 g++ 进入“严格 ANSI”模式,因此它不会声明非标准函数(并且 _stricmp()
是非标准的 - 它只是不区分大小写的 strcmp()
的一个版本)。
请改用-std=gnu++0x
。
【讨论】:
+1 但这太烦人了。恕我直言,整个 GCC 选项已经失控。【参考方案2】:除了 Michael 的解决方案之外,还有其他方法可以覆盖 strict ANSI
模式。在任何包含编译问题的文件中包含以下内容:
#ifdef __STRICT_ANSI__
#undef __STRICT_ANSI__
#endif
这不仅有助于_stricmp
,还有助于其他常用功能,如swptintf
、vswprintf
和类似功能。
【讨论】:
这个实际上为我解决了问题,而不是迈克尔的答案。我同意 nbt,GCC 选项需要进行认真的精简大修。【参考方案3】:您可以查看MinGW-w64,它允许我使用 -std=c++11 运行 Google 测试(也适用于您的 -std=c++0x)。它消除了 _stricmp、_strdup 等问题。
【讨论】:
以上是关于_stricmp with mingw 和 c++0x 不存在?的主要内容,如果未能解决你的问题,请参考以下文章
eclipse+mingw 编译c++出错,请大神门帮我看看!!!
使用 mingw64 c++ 编译 imapi2 应用程序时 imapi2.h 中的错误“没有类型的 '__RPC__range' 声明”