2012-04-18 96 views
2

我正在嘗試將TR1用於某些C++項目。不幸的是,我得到一個錯誤,不明白爲什麼或如何正確地做到這一點! 我正在使用gcc 4.4.5在Linux下工作。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 – 2012-04-18 08:02:59

+0

頭部是'tr1/random'。對於使用gcc的TR1,您也不需要C++ 0x支持。 – 2012-04-18 08:06:50

回答

6

標記-std=c++0x可讓您訪問在您的gcc版本中實現的任何C++ 11功能。對於隨機數字分佈,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:#error該文件需要編譯器和庫支持即將到來的ISO C++標準,C++ 0x。此支持目前是實驗性的,必須使用-std = C++ 0x或-std = gnu ++ 0x編譯器選項啓用。 – 2012-04-18 08:19:47

+0

我不使用正常的隨機數,但是一個normal_distribution – 2012-04-18 08:21:23

+0

@MichaelGg很奇怪。你是否包括(C++ 11)或? – juanchopanza 2012-04-18 08:21:54

1

我相信它的#include <random>。無論如何,檢查一下。

0

嘗試添加以下標誌CXX上的CMakeLists.txt:

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

-std=c++0x是沒有必要的