В настоящее время я пытаюсь использовать 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.