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

С++ 0x с Qt Creator

Я пытаюсь использовать новые функции С++ 0x в Qt Creator под Windows (Qt Creator 2.0.1).

Я прочитал нить Настройка компилятора GCC в Qt, Qt Creator и QMake и добавила QMAKE_CXXFLAGS += -std=c++0x в .pro файл.

После этого Qt Creator дает мне очень странные ошибки в этом простом коде:

#include <memory>

int main()
{
}

Ошибки компилятора:

':: swprintf' не объявлен

':: vswprintf' не объявлен

Я пытаюсь скомпилировать свой код из командной строки командой g++ test.cpp --std=c++0x и получить ту же ошибку.

Так что же с Qt MinGW компилятор? Возможно ли использовать функции С++ 0x в Qt Creator?

4b9b3361

Ответ 1

Во-первых, возможно, что заголовки библиотеки просто не представляют свои зависимости должным образом. Попробуйте добавить #include <cstdio> и, возможно, (к сожалению) a using namespace std; в ваш файл вверху.

В противном случае у нескольких людей возникли проблемы с MinGW и swprintf. Этот почтовый лист предлагает добавить следующее:

#ifdef WIN32
#define swprintf _snwprintf
#endif

Посмотрите, устраняет ли это проблему. (Вы тоже хотите его в самой верхней части файла.)

Если добавление случайных определений к вашему источнику кажется вам плохой идеей, я предлагаю использовать флаги -D build, чтобы условно ввести указанное выше определение, когда вы строите на MinGW.

См. также это короткое обсуждение о различиях между swprintf на MinGW и других компиляторах.

Наконец, в противном случае эта ссылка, кажется, приписывает проблему проблеме с флагами, которые позволяют __STRICT_ANSI__ в MinGW, и предлагает комментируя пару строк в одном из заголовков MinGW, чтобы исправить эту проблему. Я бы предложил добавить вместо них более простой #ifndef __STRICT_ANSI__, если вы решите пойти с этим хаком.