2013-02-11 31 views
68

मैं बिग नेर्ड रांच बुक ऑब्जेक्टिव-सी प्रोग्रामिंग का उपयोग कर रहा हूं, और यह पहले कुछ अध्यायों में सी में लिखकर शुरू होता है। मेरे कार्यक्रमों में से एक में मैंने इसे बनाया है, मैं नींद समारोह का उपयोग करता हूं। पुस्तक में उसने मुझे #include <stdio.h> भाग के तहत रखने के लिए कहा। यह चेतावनी से छुटकारा पाने के लिए माना जाता है कि "सी 99 में फंक्शन 'नींद' की लागू घोषणा अवैध है"। लेकिन #include <stdlib.h> डालने के कुछ कारणों से, चेतावनी दूर नहीं जाती .. यह समस्या प्रोग्राम को ठीक से चलाने से नहीं रोकती है, लेकिन मैं केवल उत्सुक था जिस पर #include मुझे उपयोग करने की आवश्यकता थी!सी में फंक्शन 'नींद' के लिए उचित # शामिल क्या है?

+1

प्लस पर्याप्त बहादुर सरल सवाल पूछने के लिए जा रहा है और मुझे बाहर की मदद करने के लिए एक। –

+1

यदि आप किसी भी मेयर आईडीई (नेटबीन, इंटेलिजे आईडीईए, ग्रहण) का उपयोग करते हैं। किसी भी फ़ंक्शन का नाम टाइप करें, फिर Alt + Enter यह लाइब्रेरी को स्वतः आयात करेगा। – T04435

उत्तर

88

नींद man page का कहना है कि इसे <unistd.h> में घोषित किया गया है। क्या आपने इसे अपने कार्यक्रम में शामिल किया है?

+0

मैंने नहीं किया था! धन्यवाद! यह सिर्फ मुझे परेशान करने वाला था, क्योंकि पुस्तक ने कहा था कि चेतावनी से छुटकारा पायेगा ... अजीब हाहा @ सिमोनक – trludt

+0

क्या देरी बनाने के लिए नींद() फ़ंक्शन या समय() का उपयोग करना बेहतर होगा? – LandonZeKepitelOfGreytBritn

36

sleep एक गैर-मानक कार्य है।

  • यूनिक्स पर, आपको <unistd.h> शामिल करना होगा।
  • एमएस-विंडोज़ पर, Sleep<windows.h> से है।

प्रत्येक मामले में, दस्तावेज़ों की जांच करें।

+1

w.r.t. सी मानक। w.r.t. POSIX, यह – ivotron

+0

यूनिक्स पर है, नींद वास्तव में सोती है और सेकंड के बजाए इसमें माइक्रोसेकंड (मिलीसेकंड * 1000) लगती है। – Agostino

4

sleep(3)unistd.h में stdlib.h नहीं है। अपनी मशीन की पुष्टि करने के लिए अपनी कमांड लाइन पर man 3 sleep टाइप करें, लेकिन मुझे लगता है कि आप मैक पर हैं क्योंकि आप उद्देश्य-सी सीख रहे हैं, और मैक पर, आपको unistd.h की आवश्यकता है।

10

sleep() के लिए यह

#include <unistd.h> 
32

होना चाहिए यह है कि क्या मैं एक पार मंच कोड के लिए उपयोग करते हैं:

#ifdef _WIN32 
#include <Windows.h> 
#else 
#include <unistd.h> 
#endif 

int main() 
{ 
    pollingDelay = 100 
    //do stuff 

    //sleep: 
    #ifdef _WIN32 
    Sleep(pollingDelay); 
    #else 
    usleep(pollingDelay*1000); /* sleep for 100 milliSeconds */ 
    #endif 

    //do stuff again 
    return 0; 
} 
+0

अच्छा समाधान, उपयोगी – HCarrasko