_stricmp с mingw и c ++ 0x не существует? - PullRequest
21 голосов
/ 11 июня 2011

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

Ответы [ 3 ]

23 голосов
/ 11 июня 2011

Опция -std=c++0x заставляет g ++ переходить в режим "строгого ANSI", поэтому он не объявляет нестандартные функции (а _stricmp() не является стандартным - это просто версия strcmp() без учета регистра)).

Вместо этого используйте -std=gnu++0x.

6 голосов
/ 10 мая 2013

В дополнение к решению Майкла есть другой метод для переопределения режима strict ANSI.Перед тем как включить в файл проблемы с компиляцией, включите следующее:

#ifdef __STRICT_ANSI__
#undef __STRICT_ANSI__
#endif

Это помогает не только с _stricmp, но и с другими общими функциями, такими как swptintf, vswprintf и simmilar.

0 голосов
/ 15 октября 2018

Вы можете взглянуть на MinGW-w64 , что позволило мне запускать тесты Google с -std = c ++ 11 (также работает с вашим -std = c ++ 0x).Устраняет проблемы с _stricmp, _strdup и пр.

...