[英]Compiling with icpc - using libraries
我正在嘗試編譯包含庫的代碼
在代碼中,我有以下幾行:
int main()
{
clock_t begin = clock();
random_device rd;
mt19937 gen(rd());
uniform_real_distribution<> U(0,1);
default_random_engine generator;
rr1=U(gen);
}
當我使用以下行進行編譯時:
icpc -std=c++0x -std=c++11 -o main main.cpp -O3
我收到以下錯誤:
main.cpp(152):錯誤:標識符“ uniform_real_distribution”是未定義的Uniform_real_distribution <> U(0,1); ^
main.cpp(152):錯誤:預期一個表達式Uniform_real_distribution <> U(0,1); ^
main.cpp(368):錯誤:標識符“ default_random_engine”是未定義的default_random_engine生成器; ^
main.cpp(441):錯誤:標識符“ U”未定義rr1 = U(gen); //時間間隔的第一個隨機數
main.cpp(509):警告#1595:通過省略號rr1 = U(gen)傳遞的非POD(普通舊數據)類類型;
任何想法如何解決這個問題?
此問題是由您的英特爾編譯器icpc版本不完全支持c ++ 11(實際上是c ++ 0x)引起的。
這意味着:
uniform_real_distribution
。 mt19937
, mt19937_64
或任何其他偽隨機數生成器。 我想以上部分回答了您的問題。
想知道更多?
對於英特爾用戶,您可以先檢查編譯器的兼容性,然后將icc的版本號轉換為相對相同的gcc的版本號,然后從c ++ 0x / c ++ 11支持的列表中進行檢查。
對於GNU用戶,您可以直接從c ++ 0x / c ++ 11支持的列表中檢查編譯器的兼容性。
例如,您可以$icpc -v
您可能會得到類似icpc version abc (gcc version xyz compatibility)
這意味着您的Inter編譯器版本為abc,其兼容性為gcc版本xyz
而且由於在GCC 4.4.5之前不支持uniform_real_distribution
? (已驗證GCC 4.4.7支持)
然后,如果您的xyz晚於4.4.5?(肯定是4.4.7),則可以使用“ uniform_xxx_distribution”函數族,而不會出現兼容性問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.