जब मैं एक सी स्रोत कोड फ़ाइलों को पढ़ रहा था, तो मुझे यह घोषणाएं मिलीं। (यह स्रोत कोड लिनक्स सिस्टम प्रोग्राम के लिए लिखा गया था। यह बहुत महत्वपूर्ण जानकारी है)
#include <time.h>
#include <stdio.h>
static timer_t* _interval_timer;
...
पहले, मैं 'टाइमर_टी' के बारे में अधिक जानना चाहता था। इसलिए मैंने हेडर की जानकारी प्राप्त करने के लिए 'time.h' को देखा। लेकिन, 'टाइमर_टी' के बारे में कोई शब्द नहीं था, केवल 'time_t' के बारे में उल्लेख कर रहा था।
जिज्ञासा में, मैंने अपने 'मैक' कंप्यूटर में 'time.h' c मानक लाइब्रेरी फ़ाइल खोजी और खोली (जैसा कि आप जानते हैं, / usr / फ़ोल्डर शामिल हैं c मानक लाइब्रेरी फ़ाइलें।) लेकिन यह फ़ाइल पिछले googled एक के साथ समान थी।
अंत में, मैंने वर्चुअल मशीन का उपयोग करके अपने linux os (ubuntu) को चालू किया और linux c मानक लाइब्रेरी फ़ोल्डर में 'time.h' का विरोध किया (फ़ोल्डर पथ OSX के समान है)। जैसा कि मुझे उम्मीद थी, linux में 'time.h' फ़ाइल में टाइमर_t की घोषणा है।
मैंने उन कोड लाइनों को जोड़ा है जो नीचे 'टाइमर_टी' प्रकार की घोषणा करती हैं।
#if !defined __timer_t_defined && \
((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t)
# define __timer_t_defined 1
# include <bits/types.h>
/* Timer ID returned by `timer_create'. */
typedef __timer_t timer_t;
मेरा सवाल यह है।
क्यों 'टाइमर_टी' को केवल लिनक्स सी मानक पुस्तकालय में परिभाषित किया गया है?
क्या यह स्थिति आमतौर पर होती है? मेरा मतलब है, क्या अलग-अलग ओएस के बीच कोई अलग-अलग परिभाषित कार्य या विशेषताएं हैं?
timer_t
"केवल लिनक्स में परिभाषित नहीं है", उदाहरण के लिए विंडोज / सिगविन पर भी इसे परिभाषित किया गया है। हेडर फ़ाइलों (लिनक्स और सिगविन) में परिभाषाओं के अनुसार यह एक पॉसिक्स मानक प्रकार लगता है। (इससे परे कि कुछ प्लेटफ़ॉर्म मानकों के अनुरूप नहीं हो सकते हैं, मुझे कोई भी विशिष्ट स्थिति नहीं दिखती है जो "आमतौर पर होता है", जैसा कि आपने इसे तैयार किया है।) भाषा पुस्तकालयों में अंतर के बारे में आपके सामान्य प्रश्न को गलत ठहराएं; यह इस बात पर निर्भर करता है कि विक्रेता मानकों का अनुपालन करते हैं या वे किन संस्करणों का अनुपालन करते हैं।