एक पूर्वप्रक्रमक मैक्रो _GLIBCXX_USE_NANOSLEEP बुलाया दो मानक हेडर फाइल में प्रकट होता है:_GLIBCXX_USE_NANOSLEEP क्या है?
- C++/4.7.1/x86_64-अज्ञात-linux-जीएनयू/बिट्स/C++ config.h
- C++/ 01: 4.7.1/धागा
जीसीसी 4.7.1 (लिनक्स, 64-बिट) केवल एक चीज C++ config.h शामिल की एक डिफ़ॉल्ट निर्माण में इस टिप्पणी है
/* Defined if nanosleep is available. */
/* #undef _GLIBCXX_USE_NANOSLEEP */
जबकि धागा में, std::this_thread::sleep_for()
और std::this_thread::sleep_until()
की परिभाषा मैक्रो पर निर्भर परिभाषित किया जाना है। यदि यह परिभाषित नहीं किया गया है, तो दोनों कार्य – हालांकि सी ++ मानक – द्वारा आवश्यक है या तो परिभाषित नहीं किया जाएगा।
मेरे सिस्टम (glibc 2.15) पर, मैक्रो परिभाषित नहीं किया गया है, हालांकि nanosleep()
फ़ंक्शन (ctime
में घोषित) मौजूद है और परिचालन है।
मुझे पता है कि क्या इस बारे में और कैसे यह से निपटने के लिए सभी है चाहते हैं। विशेष रूप से:
- वहाँ एक विन्यास वाला विकल्प है, this post ने सुझाव दिया जब डिफ़ॉल्ट रूप से इस मैक्रो को सक्रिय करने के जीसीसी का निर्माण किया जाना चाहिए, है? (मैं online documentation of the build process में कोई नहीं मिला।)
- वहाँ वास्तव में
nanosleep()
समारोह और मैक्रो के बीच एक रिश्ता है?/time.h
मेंnanosleep()
की घोषणा मैक्रो पर निर्भर, या परिभाषित प्रतीत नहीं होती है। - वहाँ किसी भी विशिष्ट जोखिम मेरे अपने हेडर फाइल में मैक्रो को परिभाषित करने में शामिल है, या कमांड लाइन पर एक विकल्प के रूप में
-D
(this related question में सुझाव के रूप में)? क्या होगा यदि मैं इसे एक सिस्टम पर करता हूं जहांnanosleep()
उपलब्ध नहीं है, और मैं वास्तव में कैसे पता लगा सकता हूं?
अद्यतन जीसीसी 4.8 के बाद से, std::this_thread::sleep_for()
और पसंद के लिए समर्थन स्वचालित रूप से ++ libstdc में शामिल है। अब कोई कॉन्फ़िगरेशन ध्वज आवश्यक नहीं है। the GCC 4.8 change log से:
this_thread :: sleep_for(), this_thread :: sleep_until() और this_thread :: उपज() कॉन्फ़िगर विकल्प --enable-libstdcxx समय की आवश्यकता के बिना परिभाषित कर रहे हैं;
लेकिन जोनाथन के जवाब में दिए गए जीसीसी 4.8 और 4.9 के लिए इसके बारे में और जानकारी दें।
क्या आपने इसे स्वयं बनाया है, या यह एक रखरखाव-आपूर्ति सी ++ है? – nneonneo
@nneonneo मैंने इसे [निर्माण विवरण] (http://gcc.gnu.org/install/) के बाद बनाया, उपयोगकर्ता-विशिष्ट निर्देशिकाओं को छोड़कर कोई विशेष विकल्प नहीं उपयोग किया। – jogojapan
किसी भी समय, 'nanosleep' के लिए' कॉन्फ़िगर करें 'जांच करता है? इसने क्या कहा? – nneonneo