2011-07-14 12 views
6

Is this proper C declaration? If so, why does it not work? पढ़ते समयक्या सी सी कार्यान्वयन में अलग-अलग शीर्षलेख शामिल होने पर मानक शीर्षलेख शामिल हो सकते हैं? मैं सोच रहा था

के बारे में
#include <stdio.h> 

int main(void) { 
    int bool = 0; 
    return bool == 0; 
} 

इस कार्यक्रम का कड़ाई अनुरूप है? दूसरे शब्दों में, stdio.hstdbool.h शामिल करने के लिए अनुमति दी है या ऐसा करना मना किया है? क्या यह spec द्वारा निर्दिष्ट है?

उत्तर

5

सी मानक शीर्षलेख अन्य शीर्षलेख शामिल नहीं कर सकते हैं। यह सी ++ से अलग है, जहां इसे स्पष्ट रूप से अनुमति दी जाती है।

C99 मानक, खंड 7.1.3

प्रत्येक हैडर वाणी या उसके संबंधित उपखंड में सूचीबद्ध सभी पहचानकर्ता को परिभाषित करता है [...] कोई अन्य पहचानकर्ता आरक्षित हैं।

+0

जबकि मैं आप में विश्वास करते हैं, तो आप हमें कुछ संदर्भों (जैसे, कश्मीर एंड आर) दे सकता है? –

+0

हम्म, यदि एक शीर्षलेख में कोई अन्य शीर्षलेख शामिल है, तो मेरे प्रोग्राम में प्रभावी रूप से दो शीर्षलेख शामिल हैं। फिर दोनों शीर्षकों के पहचानकर्ता आरक्षित हैं, ऐसा लगता है। या ऐसा कोई अन्य शीर्षलेख अवैध है क्योंकि इसे कोई स्पष्ट नियम नहीं है? –

+0

@Johannes - से मैं क्या समझ, विचार है कि एक निश्चित हैडर केवल नाम निर्दिष्ट और आम तौर पर सुरक्षित नाम शामिल हो सकते (जो [...])। यदि आप 'बूल' परिभाषित करना चाहते हैं, तो आपको शामिल करना चाहिए। अन्यथा यह केवल '_Bool' है, और आप अपने उदाहरण की तरह बूल का उपयोग कर सकते हैं। –

3

मुझे यकीन नहीं है कि यह किसी भी तरह से आधिकारिक है, लेकिन यहां Plauger कहता है (यह c89 के लिए दिया गया है)।

स्टैंडर्ड सी पुस्तकालय पंद्रह मानक हेडर प्रदान करता है। हेडर कई गुण होते हैं

वे परस्पर स्वतंत्र हैं। कोई मानक शीर्षलेख की आवश्यकता नहीं है कि किसी अन्य मानक शीर्षलेख को पहले ठीक से काम करने के लिए शामिल किया जाना चाहिए। ना ही किसी भी मानक हेडर एक और मानक हेडर शामिल हैं।

मुझे c99 या c89 में इसका कोई उल्लेख नहीं मिल रहा है।

संपादित

मैं inttypes.h देख सकते हैं stdint.h

7.8-1

हैडर <inttypes.h> हैडर <stdint.h> भी शामिल है और यह फैली की मेजबानी कार्यान्वयन द्वारा प्रदान की अतिरिक्त सुविधाओं के साथ शामिल हैं।

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

  • कोई संबंधित समस्या नहीं^_^