दिलचस्प पोस्ट
एंड्रॉइड मैनिफ़ेस्ट टेबलेट के लिए प्रतिबंधित आकार 0 के साथ सरणी PHP विधि chaining? "मैत्रीपूर्ण" OS संस्करण नाम कैसे प्राप्त करें? जब त्रुटि.नेटवर्क रिस्पॉन्सस रिक्त है तो एंड्रॉइड वॉली में एचटीपीपी स्थिति कोड अज्ञात संशोधक '/' में …? यह क्या है? कल आधी रात की जावा दिनांक ऑब्जेक्ट और आधी रात को कैसे बनाऊं? मैं UILabel डिस्प्ले को रेखांकित टेक्स्ट कैसे बनाऊं? सैंडी-पुल और हैवैल एसएसई 2 / एवीएक्स / एवीएक्स 2 के लिए प्रति चक्र फ्लॉप क्या आंतरिक एचटीएमएल के साथ स्क्रिप्ट्स डाली जा सकती हैं? WPF में एक बटन माउसओवर के लिए पृष्ठभूमि कैसे बदलें? अतिरिक्त अनुरोध भेजने वाले क्रोम के साथ क्या करना है? डीबी से कनेक्ट किए बिना mysql_real_escape_string के वैकल्पिक कैसे जावास्क्रिप्ट में एक इनलाइन इवेंट हैंडलर के लिए तर्क के रूप में ईवेंट को पास करें? मैं अपने .net असेंबलियों को अपव्यय से कैसे बचा सकता हूं?

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

मैंने देखा है कि लिनक्स कर्नल कोड 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 है।