2015-03-11 4 views
5

मैं सिग्विन के तहत विंडोज 7 पर कुछ सी ++ 11 कोड का परीक्षण करने की कोशिश कर रहा हूं, और सी ++ 11 से शुरू होने वाले कार्यों के लिए त्रुटियों को संकलित कर रहा हूं , जैसे std::log2 और std::round। मैं gcc 4.9.2 का उपयोग कर g++ -std=c++11 test.cpp के साथ संकलित कर रहा हूं। यहाँ कुछ कम से कम उदाहरण है कि संकलित करने के लिए विफल हो जाता है:जी ++ में सी ++ 11 के लिए सिग्विन समर्थन 4.9.2

#include <cmath> 
#include <iostream> 

int main() 
{ 
     auto x = std::log2(10); 
     std::cout << x << std::endl; 
} 

त्रुटि:

g++ -std=c++11 test.cpp 
test.cpp: In function ‘int main()’: 
test.cpp:5:11: error: ‘log2’ is not a member of ‘std’ 
    auto x = std::log2(10); 
     ^
test.cpp:5:11: note: suggested alternative: 
In file included from /usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/cmath:44:0, 
       from test.cpp:1: 
/usr/include/math.h:305:15: note: ‘log2’ 
extern double log2 _PARAMS((double)); 

इस cygwin के ग्राम ++ पोर्टिंग में एक ज्ञात बग है? उपरोक्त कोड सी ++ 11 का समर्थन करने वाले किसी भी लिनक्स/यूनिक्स स्वाद पर ठीक काम करता है।

+0

[इस] से संबंधित दिखता है (https://cygwin.com/ml/cygwin/2015-03/msg00247.html) –

+0

@ShafikYaghmour ओह धन्यवाद! मैं वास्तव में वह व्यक्ति था जिसने बग भर दिया था, उसे नहीं पता था कि उन्होंने इसे ठीक किया है :) – vsoftco

+0

ऐसा लगता है कि आपने बग रिपोर्ट दायर की थी, इसलिए मैं थोड़ा उलझन में था। अन्यथा मैं सिर्फ एक उत्तर प्रदान करता क्योंकि यह वास्तव में तय किया गया था। वैकल्पिक रूप से आप एक स्व-उत्तर प्रदान कर सकते हैं कि आप एक बग रिपोर्ट दायर कर रहे हैं और यह तय किया गया था। अन्य लोगों के पास शायद यह समस्या भी होगी। –

उत्तर

3

यह समस्या साइगविन कार्यान्वयन से संबंधित bug प्रतीत होती है, शाफिक यागहोर के लिए इसका संकेत देने के लिए धन्यवाद।

समस्या अब ऊपर दिए गए लिंक पर <cmath> के लिए पैच के माध्यम से तय की गई है।

+0

क्या यह बग g ++ 4.9.3 में तय है? धन्यवाद – sujithvm

+0

@ सुजीथवम निश्चित नहीं है, साइगविन बग रिपोर्ट सिस्टम – vsoftco

+0

@sujithvm std :: round को जांचने के लिए बेहतर है मेरे परीक्षण में 4.9.3 में परिभाषित नहीं किया गया है। यह 5.1.0 में परिभाषित किया गया है। निश्चित नहीं है कि वास्तव में यह ठीक हो गया था। – jtbr

संबंधित मुद्दे