В настоящее время я пытаюсь использовать googletest с MinGW и -std=c++0x
, но он жалуется, что _stricmp is not declared in this scope
, которого нет, когда я не использую -std=c++0x
.
Я понятия не имею, что такое _stricmp
, я только выяснил, что он определен в cstring/string.h
, так почему он ушел в С++ 0x?
_stricmp с mingw и С++ 0x не существует?
Ответ 1
Опция -std=c++0x
заставляет g++ переходить в режим "строгого ANSI", поэтому он не объявляет нестандартные функции (а _stricmp()
является нестандартным - это просто версия strcmp()
, которая нечувствительна к регистру).
Используйте -std=gnu++0x
вместо этого.
Ответ 2
В дополнение к решению Майкла существует другой метод переопределения режима strict ANSI
. Включите следующее, прежде чем включать в файл с проблемами компиляции:
#ifdef __STRICT_ANSI__
#undef __STRICT_ANSI__
#endif
Это помогает не только с _stricmp
также с другими распространенными функциями, такими как swptintf
, vswprintf
и simmilar.