दिलचस्प पोस्ट
मैं एक साधारण पायथन लूप को समानांतर कैसे कर सकता हूं? जावा स्ट्रिंग सभी गैर अंकीय वर्णों को निकालते हैं ट्रान्सेंडैंटल समीकरण के समाधान की सटीकता में वृद्धि मुद्रण सी 0 में है? PHP में क्लाइंट आईपी पता कैसे प्राप्त करें? सी # – विंडोज 64 बिट पर प्रोग्राम फाइल (एक्स 86) कैसे प्राप्त करें I विधि पैरामीटर और स्थानीय चर के लिए अंतिम उपयोग करना चाहिए? पंक्ति में अंतिम नहीं खाली सेल; एक्सेल VBA समेकित फ़ंक्शन के बिना टीएसक्यूएल पायवोट डुप्लिकेट को सूची से कैसे हटाएं? सी ++ में स्ट्रिंग और चार प्रकारों के बीच का अंतर उपयोगकर्ता के रूप में प्रमाणीकृत किए बिना मैं Instagram से उपयोगकर्ता के मीडिया कैसे प्राप्त करूं? getActivity () टुकड़ा समारोह में शून्य रिटर्न MySQL में एकाधिक अपडेट पायथन में सिंगलटन बनाना

क्या बूल एक देशी सी प्रकार है?

मैंने देखा है कि लिनक्स कर्नल कोड bool का उपयोग करता है, लेकिन मैंने सोचा था कि bool एक C ++ प्रकार था। क्या बूल एक मानक सी एक्सटेंशन (जैसे आईएसओ सी 90) या जीसीसी एक्सटेंशन है?

वेब के समाधान से एकत्रित समाधान "क्या बूल एक देशी सी प्रकार है?"

bool वर्तमान सी में मौजूद है – C99, लेकिन C89 / 90 में नहीं

C99 में मूल प्रकार को वास्तव में _Bool कहा जाता है, जबकि bool एक मानक पुस्तकालय मैक्रो है जिसे stdbool.h में परिभाषित किया stdbool.h (जो अपेक्षित रूप से _Bool को हल करता है)। प्रकार के ऑब्जेक्ट्स _Bool को 0 या 1 को पकड़ो, जबकि true और false भी stdbool.h से मैक्रो हैं।

C99 ने एक अंतर्निहित _Bool डेटा प्रकार जोड़ा (विवरण के लिए विकिपीडिया देखें), और यदि आप #include <stdbool.h> , तो यह _Bool को मैक्रो के रूप में _Bool को प्रदान करता है।

आपने विशेष रूप से लिनक्स कर्नेल के बारे में पूछा यह _Bool की उपस्थिति को ग्रहण करता है और इसमें / linux / types.h में शामिल किए गए एक bool _Bool प्रदान करता है।

नहीं, आईएसओ सी 90 में कोई bool नहीं है।

मानक सी (नहीं, C99) में कीवर्ड की एक सूची है:

  • auto
  • break
  • case
  • char
  • const
  • continue
  • default
  • do
  • double
  • else
  • enum
  • extern
  • float
  • for
  • goto
  • if
  • int
  • long
  • register
  • return
  • short
  • signed
  • static
  • struct
  • switch
  • typedef
  • union
  • unsigned
  • void
  • volatile
  • while

कर्नेल और मानक में उपयोग किए जाने वाले सी के साथ कुछ अन्य मतभेदों पर चर्चा करते हुए यह एक लेख है: http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/index.html

सी 99 में यह stdbool.h में है , लेकिन C90 में इसे टाइप-फेफ़ या एन्यूम के रूप में परिभाषित किया जाना चाहिए:

 typedef int bool; #define TRUE 1 #define FALSE 0 bool f = FALSE; if (f) { ... } 

वैकल्पिक रूप से:

 typedef enum { FALSE, TRUE } boolean; boolean b = FALSE; if (b) { ... } 
 /* Many years ago, when the earth was still cooling, we used this: */ typedef enum { false = ( 1 == 0 ), true = ( ! false ) } bool; /* It has always worked for me. */ 

_Bool C99 में एक कीवर्ड है: यह एक प्रकार निर्दिष्ट करता है, जैसे कि int या double

6.5.2

2 प्रकार के रूप में घोषित ऑब्जेक्ट _Bool 0 और 1 के मानों को स्टोर करने के लिए काफी बड़ा है।

सी 99 परिभाषा bool, true और false stdbool.h

stdbool.h c99 में पेश किया गया था

ऐसी कोई चीज नहीं है, संभवतः केवल int के लिए मैक्रो

stdbool.h मैक्रोज़ सही और झूठी परिभाषित करता है, लेकिन याद रखना कि यह 1 और 0 होने के लिए परिभाषित है।

यही कारण है कि sizeof(true) 4 है।