I'm currently trying to use googletest with MinGW and -std=c++0x
but it complains that _stricmp is not declared in this scope
which it doesn't when I do not use -std=c++0x
.
I have no idea what _stricmp
is, I just found out that it is defined in cstring/string.h
, so why is it gone in C++0x?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
The -std=c++0x
option causes g++ to go into 'strict ANSI' mode so it doesn't declare non-standard functions (and _stricmp()
is non-standard - it's just a version of strcmp()
that's case-insensitive).
Use -std=gnu++0x
instead.
回答2:
In addition to solution by Michael there is other method for overriding strict ANSI
mode. Include the following before any includes in file with compilation problems:
#ifdef __STRICT_ANSI__
#undef __STRICT_ANSI__
#endif
This helps not only with _stricmp
also with other common functions like swptintf
, vswprintf
and simmilar.
回答3:
You can take a look at MinGW-w64, which allowed me to run Google Tests with -std=c++11 (works with your -std=c++0x as well). It eliminates problems with _stricmp, _strdup and so forth.