Войти
ПрограммированиеФорумОбщее

Поддержка c++0x в gcc

#0
16:23, 27 сен. 2010

Добрый день.
Столкнулся с такой проблемой: поддержка нового стандарта в компиляторе есть, но по умолчанию она отключена. Попытка использовать фичи c++0x приводит к такому сообщению
This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
Я бы с радостью воспользовался этим советом, но проект собираю под Qt Creator и не могу понять как и где эту опцию нужно указывать.
А еще пытался подключить tr1/shared_ptr.h. Такой ошибки не выдает, зато выдает гору ошибок компиляции. Странно это.
ПыСы: пробовал на версиях 4.4.0 и 4.5.0.
Спасибо за внимание, буду рад любым советам :)


#1
16:58, 27 сен. 2010

Нету gcc под рукой, но можно попробовать так сделать:
QMAKE_CFLAGS += -std=c++0x
QMAKE_CXXFLAGS += -std=c++0x

#2
17:13, 27 сен. 2010

Подключение QMAKE_CFLAGS += -std=c++0x  в .pro файле ничего не дает,
а подключение QMAKE_CXXFLAGS += -std=c++0x приводит к появлению ошибок:
1 ) swprintf has not been declared
2 ) vswprintf has not been declared

#3
17:33, 27 сен. 2010

Tolanay

#include <tr1/memory>
int main(int argc,char* argv[]) {
    std::tr1::shared_ptr<int> sp = std::tr1::shared_ptr<int>(new int(10));
    return 0;
}
чтоб не писать tr1 можно так:
#ifndef __GNUC__ 
#include <tr1/memory>
namespace std {
 using shared_ptr;
}
#endif
int main(int argc,char* argv[]) {
    std::shared_ptr<int> sp = std::shared_ptr<int>(new int(10));
    return 0;
}
#4
17:44, 27 сен. 2010

Tolanay
Приведи свой код, давай проверим.

#5
17:58, 27 сен. 2010

AndryBlack
>namespace std{
> using shared_ptr;
>}
эээ, может, tr1::shared_ptr; ?

#6
18:03, 27 сен. 2010

PANDA
> эээ, может, tr1::shared_ptr; ?
ну да, конечно

#7
18:06, 27 сен. 2010

SOURCES = main.cpp
QMAKE_CXXFLAGS += -std=c++0x

#include <tr1/memory>

int main()
{
  std::tr1::shared_ptr<int> sp = std::tr1::shared_ptr<int>(new int(10));
  return 0;
}

Проверил, работает всё

#8
18:55, 27 сен. 2010

Всем спасибо за ответы, теперь все Ok :)
QMAKE_CXXFLAGS += -std=c++0x, как оказалось работает только для gcc 4.5.0.
#include <tr1/memory> блин, я действительно ступил, стал shared_prt.h напрямую подключать.

#ifndef __GNUC__
#include <tr1/memory>
namespace std {
using shared_ptr;
}
#endif
int main(int argc,char* argv[]) {
    std::shared_ptr<int> sp = std::shared_ptr<int>(new int(10));
    return 0;
}
Это полезно, мне проект под vs 2010 параллельно тащить, там этого дурацкого tr1 не нужно, ну а теперь и вообще хрен с ним :)
Еще раз спасибо всем за помощь, и оперативные ответы! :)

ПрограммированиеФорумОбщее

Тема в архиве.