اسم الوظيفة : تأكيد
ملف الرأس : <assert.h>
النموذج الأولي للوظيفة : تأكيد باطلة (تعبير int)؛
الوظيفة : التأكد من صحة التعبير
المعلمة : التعبير إذا كانت قيمته خاطئة (أي 0)، فإنه يطبع أولاً رسالة خطأ إلى stderr، ثم ينهي البرنامج عن طريق استدعاء abort.
قيمة الإرجاع : لا توجد قيمة إرجاع
تجديد :
1. ستؤثر المكالمات المتكررة بشكل كبير على أداء البرنامج وتزيد من الحمل الإضافي. بعد تصحيح الأخطاء، يمكنك تعطيل استدعاءات التأكيد عن طريق إدراج #define NDEBUG قبل العبارة التي تحتوي على #include <assert.h>.
2. التحقق من شرعية المعلمات التي تم تمريرها في بداية الوظيفة.
3. كل تأكيد يختبر شرطًا واحدًا فقط، لأنه عندما يتم اختبار شروط متعددة في نفس الوقت، إذا فشل التأكيد، فمن المستحيل تحديد الشرط الذي فشل بشكل بديهي.
4. لا يمكنك استخدام العبارات التي تغير البيئة، لأن التأكيد لا يسري إلا في DEBUG. إذا قمت بذلك، فسوف تواجه مشاكل عندما يتجاهل البرنامج عبارة التأكيد عندما يكون قيد التشغيل بالفعل، مثل:
خطأ:
تأكيد(i++<100);
وذلك لأنه في حالة حدوث خطأ، على سبيل المثال، i=100 قبل التنفيذ، فلن يتم تنفيذ هذا البيان، ومن ثم لن يتم تنفيذ الأمر i++.
صحيح:
تأكيد(i<100);i++;
5. يجب أن يكون هناك سطر فارغ بين التأكيد والعبارات التالية لخلق شعور بالاتساق المنطقي والمرئي.
6. في بعض الأماكن، لا يمكن للتأكيد أن يحل محل التصفية الشرطية. يتم استخدام التأكيد لتجنب الأخطاء الواضحة، وليس للتعامل مع الاستثناءات. الأخطاء والاستثناءات مختلفة، ولا ينبغي أن تحدث الأخطاء، والاستثناءات لا مفر منها. يمكن معالجة استثناءات لغة C من خلال الحكم الشرطي، ولدى اللغات الأخرى آليات خاصة بها للتعامل مع الاستثناءات. هناك قاعدة بسيطة جدًا لاستخدام التأكيد وهي استخدامه في بداية الطريقة أو الوظيفة. إذا كنت تستخدمه في منتصف الطريقة، فيجب عليك التفكير بعناية فيما إذا كان ذلك مناسبًا. لم تبدأ العملية الوظيفية في بداية الطريقة، والمشكلات التي تحدث أثناء تنفيذ العملية الوظيفية كلها تقريبًا استثناءات.
مثال البرنامج : تأكيد المتغير a<80 وإخراج النتيجة
#include<assert.h>#include<stdio.h>intmain(void){inta=50;assert(a<80);// تأكيد a<80، إذا كان 0، قم بإخراج رسالة خطأ وإنهاء البرنامج ، وإلا استمر في تنفيذ printf (Assertaistruen);return(0);}
نتائج التشغيل:
تأكيد