Reklama

توجيهات Preprocessor في لغات البرمجة C/C++

يتم تضمين ملفات الرأس في نص البرنامج باستخدام توجيهات preprocessor #وتشمل. توجيهات Preprocessor تبدأ مع “حادة” (#), الذي يجب أن يكون الحرف الأول من السلسلة. البرنامج, الذي يعالج هذه التوجيهات, دعا على preprocessor (في الحديث المجمعين على preprocessor هو عادة جزء من برنامج التحويل البرمجي).

#تشمل التوجيه يشمل البرنامج محتويات الملف المحدد. اسم الملف يمكن تحديده بطريقتين:

إذا كان اسم الملف هو المحاطة بأقواس زاوية (<>), نظرت, نحن بحاجة إلى معايير رأس الملف, و المترجم بالبحث عن هذا الملف في مواقع محددة مسبقا. (طريقة تحديد هذه الأماكن تختلف اختلافا كبيرا من مختلف المنصات و التطبيقات.) علامات الاقتباس المزدوجة يعني, هذا الملف رأس - مخصص, و البحث يبدأ من الدليل, أين هو رمز مصدر البرنامج.

رأس ملف يمكن أن تحتوي أيضا على توجيهات #وتشمل. ولذلك في بعض الأحيان من الصعب أن نفهم, ماذا رأس الملفات المضمنة في النص المصدر, و بعض رأس الملفات قد يتم تضمين عدة مرات. تجنب هذا السماح المشروطة توجيهات preprocessor. النظر في المثال:

الشرطي التوجيه #ifndef الشيكات, إذا كانت قيمة BOOKSTORE_H حددت في وقت سابق. (BOOKSTORE_H - هذا preprocessor المستمر; هذه الثوابت هي عادة ما تكون مكتوبة بحروف كبيرة.) على preprocessor العمليات التالية خطوط تصل إلى التوجيه #endif. وإلا فإنه يتخطى الخط من #ifndef إلى # endif.

التوجيه:

ويعرف preprocessor المستمر BOOKSTORE_H. وضع التوجيه مباشرة بعد التوجيه #ifndef, يمكننا ضمان, ما هو محتوى الملف header الكتب.ح سيتم تضمينها في النص المصدر مرة واحدة فقط, لا يهم عدد المرات التي تدرج في نص الملف نفسه.

من الأمثلة الأخرى الشائعة استخدام المشروطة preprocessor التوجيهات إدراج في نص البرنامج تصحيح المعلومات. على سبيل المثال:

إذا المستمر التصحيح غير معرف, البرنامج الناتج النص سوف تبدو مثل هذا:

وإلا فإننا سوف تحصل على:

على preprocessor المستمر يمكن أن يكون المحدد في سطر الأوامر عند استدعاء برنامج التحويل البرمجي باستخدام الخيار-D (في تطبيقات مختلفة, قد يكون هذا خيار اسمه بشكل مختلف). من أجل UNIX-نظم استدعاء برنامج التحويل البرمجي مع تعريف الثوابت preprocessor التصحيح يبدو مثل هذا:

هناك ثوابت, والتي يتم التعريف تلقائيا بواسطة برنامج التحويل البرمجي. على سبيل المثال, يمكننا أن نتعلم, نقوم بتجميع C أو C++ . C++ البرامج تلقائيا تعريف ثابت __cplusplus (اثنين من يؤكد). معيار يحدد __STDC__. بالطبع, كل ثوابت لا يمكن تحديده في وقت واحد. المثال:

أخرى مفيدة الثوابت المعرفة مسبقا (في هذه الحالة فمن الأفضل أن أقول المتغيرات) preprocessor هي __الخط__ و __FILE__. متغير __الخط__ يحتوي على عدد حاليا بتجميع خط, و __FILE__ - اسم تجميع الملف. هنا هو مثال على استخدامها:

اثنين من الثوابت __التاريخ__ و __الوقت__ تتضمن تاريخ ووقت التجميع.

معيار ج توفر مكتبة مفيدة الماكرو تأكيد, الذي يتحقق بعض الشرط إذا, إذا كان لا يتم, القضايا تشخيص رسالة إحباط البرنامج. ونحن غالبا ما تستخدم هذه مفيدة الماكرو في الأمثلة التالية برامج. استخدامه ينبغي أن تدرج في برنامج التوجيه

تأكيد.ح - هذا الملف رأس من مكتبة القياسية مع. برنامج C++ يمكن الرجوع إلى ملف الرأس كما يبدو من اسمها, اعتمدت في ج, و باسم, اعتمدت في C++. في مكتبة القياسية مع++ يسمى هذا الملف cassert.

اسم الملف رأس في مكتبة C++ يختلف اسم الملف المقابلة مع أي تمديد الجبهة استبدلوا حرف c (المذكورة أعلاه, ماذا ملفات رأس C++ الملحقات لم تستخدم, لأنها قد تعتمد على تنفيذ).

تأثير استخدام توجيهات preprocessor #وتشمل يعتمد على نوع ملف الرأس. دليل:

يتضمن النص من ملف البرنامج المحتوى cassert. ولكن لأن كل الأسماء, تستخدم في مستوى مكتبة C++, المحددة في std الفضاء, اسم تأكيد سوف تكون غير مرئية حتى ذلك الحين, بينما من الواضح أننا لن تجعلها مرئية باستخدام التالية أ-استخدام-التوجيه:

وإذا أضفنا رأس ملف مكتبة

الحاجة أ-استخدام-التوجيه لا: اسم تأكيد سيتم النظر إليها و إذا . (مساحات الأسماء المستخدمة من قبل مكتبة المصممين تجنب رمي النفايات العالمية مساحة.

Reklama