bool / true / false
bool وtrue وfalse ككلمات مفتاحية bool / true / false
من C23، bool وtrue وfalse جزء من اللغة نفسها مباشرة — بدون الحاجة لتضمين stdbool.h.
قبل C23 كان لازم تضمّن <stdbool.h> لاستخدام bool كنوع، وكانت true وfalse مجرّد ماكروهات تُترجم لـ 1 و0. من C23 أصبحت bool وtrue وfalse كلمات مفتاحية أصيلة باللغة، متاحة دائمًا دون أي تضمين — بنفس الطريقة اللي كانت فيها C++ تتعامل معها منذ البداية.
<stdbool.h> ما زال موجودًا ويعمل بدون أي مشكلة لتوافق الكود القديم (يُعرّف نفس المعاني)، لكنه لم يعد ضروريًا بمشروع C23 جديد. المترجمات الحديثة (GCC 15 فما فوق كمثال) تفعّل C23 كمعيار افتراضي.
الصياغة
bool flag = true; // بدون #include <stdbool.h> في C23
📄 مثال
#include <stdio.h>
int main(void) {
bool active = true; // يعمل مباشرة في C23
if (active) {
printf("نشط\n");
}
return 0;
}أهم النقاط
| العنصر | الوظيفة |
|---|---|
| bool | نوع منطقي أصيل باللغة من C23 — لا حاجة لـ stdbool.h |
| true / false | كلمات مفتاحية بقيمة 1 و0 على التوالي، بدل ماكروهات |
| stdbool.h | ما زال يعمل للتوافق الخلفي مع كود مكتوب قبل C23 |
💡 نصائح عملية
- بمشروع C23 جديد لا داعي لتضمين stdbool.h، لكن تضمينه لا يسبب أي ضرر لو نسيت
- تأكد أن المترجم يدعم C23 فعليًا (GCC 15+ أو Clang حديث) قبل الاعتماد على الكلمات المفتاحية مباشرة
⚠️ أخطاء شائعة
- افتراض أن كل بيئات الترجمة تدعم C23 افتراضيًا — مترجمات أو أنظمة أقدم قد تحتاج -std=c23 صراحة أو ما زالت تتطلّب stdbool.h
- الخلط بين معيار C23 ومعيار C++ عند القراءة عن bool — القواعد تطابقت أخيرًا لكن التاريخ مختلف
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار C الكامل بالعربي.