१. परिचय
सी भाषामा assert म्याक्रो डिबगिङको समयमा अत्यन्त उपयोगी उपकरण हो। यो कार्यक्रम अपेक्षित रूपमा चलिरहेको छ कि छैन जाँच गर्दछ र यदि असामान्य अवस्था पत्ता लागेमा कार्यक्रमलाई समाप्त गर्न बाध्य पार्दछ। यसले तपाईंलाई समस्या क्षेत्रहरूलाई छिट्टै पहिचान गर्न र ठीक गर्न अनुमति दिन्छ। यस लेखमा, हामी assert को आधारभूत प्रयोगदेखि उन्नत प्रविधिहरू र वास्तविक विश्व विकासमा व्यावहारिक अनुप्रयोगहरू सम्म सबै कुरा व्याख्या गर्नेछौं।
१.१ assert म्याक्रो के हो?
assert म्याक्रो सी मानक लाइब्रेरी <assert.h> को भाग हो र निर्दिष्ट अवस्थाले false मूल्यांकन गरेमा त्रुटि सन्देश आउटपुट गरेर र कार्यक्रमलाई समाप्त गरेर काम गर्दछ। यसले कार्यक्रमको खराबी रोक्दछ र डिबगिङलाई थप कुशल बनाउँछ।
१.२ डिबगिङमा assert को महत्व
डिबगिङको समयमा, अपेक्षित कार्यक्रम व्यवहार विघ्नित भएको छ भने जत्ति चाँडो सम्भव छ त्यत्ति चाँडो पत्ता लगाउन आवश्यक छ। assert प्रयोग गर्दा गलत व्यवहार घटेमा कार्यक्रमलाई तुरुन्तै रोक्न सकिन्छ, जसले समस्यालाई pinpoint गर्न सजिलो बनाउँछ। जटिल अवस्थाहरूमा पनि जहाँ बगहरू फेला पार्न गाह्रो हुन्छ, assert ले डिबगिङ प्रक्रियालाई सुव्यवस्थित गर्न मद्दत गर्दछ【१३】।
२. assert को आधारभूत वाक्यविन्यास र व्यवहार
assert म्याक्रो प्रयोग गर्न, तपाईंले पहिले <assert.h> समावेश गर्नुपर्छ। आधारभूत वाक्यविन्यास निम्नानुसार छ:
#include <assert.h>
assert(condition);
यदि अवस्था true छ भने, assert ले केही गर्दैन। यदि यो false छ भने, यो त्रुटि सन्देश आउटपुट गर्दछ र कार्यक्रमलाई समाप्त गर्दछ। तलको उदाहरण हेर्नुहोस्:
#include <assert.h>
int main(void) {
int x = 10;
assert(x > 0); // Condition is true, nothing happens
assert(x < 0); // Condition is false, outputs error message and terminates
return 0;
}
२.२ त्रुटि सन्देशको विवरण
जब assert असफल हुन्छ, त्रुटि सन्देशमा निम्न जानकारी समावेश हुन्छ:
- अवस्था अभिव्यक्ति
- स्रोत फाइल नाम (
__FILE__) - लाइन नम्बर (
__LINE__) - फङ्क्शन नाम (
__func__)Assertion failed: (x < 0), file main.c, line 6
यो जानकारीले कार्यक्रममा त्रुटि कहाँ भएको छ भनेर छिट्टै पहिचान गर्न मद्दत गर्दछ।
२.३ assert सँग कार्यक्रम समाप्ति
यदि assert म्याक्रो असफल हुन्छ भने, यो abort() फङ्क्शन कल गर्दछ, जसले कार्यक्रमलाई असामान्य रूपमा समाप्त गर्दछ। यसले कार्यक्रमलाई अमान्य अवस्थामा चलिरहनबाट रोक्दछ।

३. assert र if वक्तव्यहरू बीचको भिन्नता
३.१ if वक्तव्यहरूसँग त्रुटि जाँच
if वक्तव्यले अवस्था गलत हुँदा त्रुटिहरू ह्यान्डल गर्दै कार्यक्रमलाई जारी राखेर लचिलो त्रुटि ह्यान्डलिङ अनुमति दिन्छ। तल if वक्तव्यसँग त्रुटि जाँचको उदाहरण छ:
if (x > 0) {
// Normal processing
} else {
printf("Error: x is less than 0n");
// Program continues
}
if वक्तव्यसँग, अवस्था गलत हुँदा कार्यक्रम समाप्त हुँदैन, त्यसैले डेभलपरले त्रुटिलाई म्यानुअल रूपमा ह्यान्डल गर्नुपर्छ।
३.२ assert को फाइदाहरू
assert ले अवस्था गलत हुँदा कार्यक्रमलाई जबरजस्ती समाप्त गर्दछ, अमान्य अवस्थामा कार्यान्वयन जारी राख्ने जोखिम रोक्दछ। यो सम्भावित बग स्थानहरू छिट्टै पत्ता लगाउन विशेष रूपमा उपयोगी छ। ठूला परियोजनाहरू वा जटिल कोडबेसहरूमा, assert प्रयोग गर्दा डिबगिङ दक्षता धेरै सुधार गर्न सकिन्छ।
४. NDEBUG म्याक्रोसँग assert प्रयोग
४.१ NDEBUG म्याक्रो के हो?
NDEBUG म्याक्रो परिभाषित गरेर, तपाईं रिलिज बिल्डहरूमा assert लाई असक्षम गर्न सक्नुहुन्छ। डिबगिङको समयमा, व्यवहार प्रमाणित गर्न assert लाई सक्रिय राख्नुहोस्, र प्रदर्शन प्रभावलाई न्यूनतम बनाउन रिलिज बिल्डहरूमा यसलाई असक्षम गर्नुहोस्।
#define NDEBUG
#include <assert.h>
assert(x > 0); // This line is ignored because NDEBUG is defined
४.२ रिलिज बिल्डहरूमा प्रयोगका मामिलाहरू
रिलिज बिल्डहरूमा assert असक्षम गर्दा अनावश्यक जाँचहरू हटाउँछ, जसले प्रदर्शन सुधार गर्दछ। व्यावसायिक सफ्टवेयर र ठूलो-स्तरीय प्रणालीहरूको लागि, डिबगिङको समयमा assert प्रयोग गर्नु र रिलिज संस्करणमा यसलाई असक्षम गर्नु महत्वपूर्ण छ ताकि स्रोतहरूको बर्बादी नहोस् र प्रदर्शनलाई अनुकूलित गर्न सकियोस्।
५. उन्नत प्रयोग प्रविधिहरू
५.१ बहु अवस्थाहरू जाँच
assert प्रयोग गरेर, तपाईं एकै पटक धेरै सर्तहरू जाँच गर्न सक्नुहुन्छ। तलको उदाहरणमा, && अपरेटरलाई धेरै सर्तहरू जाँच गर्न प्रयोग गरिएको छ:
assert(x > 0 && y > 0);
यो विधिले एकै कथनमा धेरै आवश्यकताहरू जाँच गरेर कोडको कार्यक्षमता सुधार्छ।
5.2 अनुकूल सन्देशहरू प्रदर्शन गर्दै
त्रुटि आएमा थप विस्तृत प्रतिक्रिया प्रदान गर्न तपाईं assert त्रुटि सन्देशमा अनुकूल जानकारी थप्न सक्नुहुन्छ। तलको कोडले सर्त गलत हुँदा विशेष त्रुटि सन्देश देखाउँछ:
assert(x > 0 && "x must be greater than 0");
त्रुटि सन्देशलाई अनुकूलन गरेर, तपाईं डिबगिङको क्रममा समस्या स्पष्ट रूपमा पहिचान गर्न सक्नुहुन्छ।


