2012-04-18 3 views
2

Я пытаюсь использовать TR1 для некоторого проекта на C++. К сожалению, я получаю сообщение об ошибке и не понимаю, почему и как я должен делать это правильно! Я работаю под Linux с gcc 4.4.5.TR1 не работает с gcc и Cmake

Я получаю ошибку

myfile.cpp:21:35: error: tr1/normal_distribution: No such file or directory  

Файл TR1 мне нужно ввозится через:

#include <tr1/normal_distribution> 

в CMakeLists.txt я включить поддержку TR1 (-std = C++ 0x)

SET (CMAKE_CXX_FLAGS "-Wall -std=c++0x -DNDEBUG -O3 -march=nocona -msse4.2") 

Любая идея, что я делаю неправильно?

Большое спасибо за вашу помощь

+0

http://stackoverflow.com/questions/1118482/c-tr1-how-to -use-the-normal-distribution –

+0

Заголовок 'tr1/random'. Также для TR1 с gcc вам не нужна поддержка C++ 0x. –

ответ

6

Флаг -std=c++0x дает вам доступ к любой функциональности C++ 11, реализованной в вашей версии gcc. Для распределений случайных чисел C++ 11 имеет заголовок random. При использовании C++ 11 вам не нужно пространство имен tr1.

tr1 версия случайного включения включает tr1/random и все, что находится под пространством имен std::tr1. Для этого вам не нужен флаг c++0x.

Чтобы было ясно:

Для TR1 случайных чисел: #include <tr1/random> и использовать std::tr1::normal_distribution.

Для C++ 11 случайных чисел: скомпилировать с флагом c++0x, затем #include <random> и использовать std::normal_distribution.

+0

Видимо, мне это нужно. Если я этого не сделаю, я получаю следующую ошибку: /usr/include/c++/4.4/c++0x_warning.h:31:2: ошибка: #error Этот файл требует поддержки компилятора и библиотеки для предстоящего ISO C++ стандарт, C++ 0x. Эта поддержка в настоящее время является экспериментальной и должна быть включена с параметрами -std = C++ 0x или -std = gnu ++ 0x. –

+0

Я не использую обычные случайные числа, но normal_distribution –

+0

@MichaelGg, что странно. Вы включаете (C++ 11) или ? – juanchopanza

1

Я считаю его #include <random>. В любом случае, проверьте это.

0

пытаются добавить следующие флаги Cxx на CMakeLists.txt:

set (CMAKE_CXX_FLAGS "-stdlib=libstdc++") 

-std=c++0x не нужно

Смежные вопросы