Подтвердить что ты не робот

_stricmp с mingw и С++ 0x не существует?

В настоящее время я пытаюсь использовать googletest с MinGW и -std=c++0x, но он жалуется, что _stricmp is not declared in this scope, которого нет, когда я не использую -std=c++0x. Я понятия не имею, что такое _stricmp, я только выяснил, что он определен в cstring/string.h, так почему он ушел в С++ 0x?

4b9b3361

Ответ 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.