C++ میں میکرو فنکشنز

C My Mykrw Fnkshnz



C++ پروگرامنگ میں، میکرو فنکشنز کوڈ کی لچک اور کارکردگی کو بڑھانے کے لیے ایک طاقتور ٹول ہیں۔ ایک میکرو ماخذ کوڈ کے اندر ایک پلیس ہولڈر کے طور پر کام کرتا ہے، اصل مرتب کرنے کے عمل سے پہلے اسے پری پروسیسر کے ذریعہ اس کی متعلقہ قیمت کے ساتھ تبدیل کرتا ہے۔ میکروز کی ابتدا #define کمانڈ کا استعمال کرتے ہوئے کی جاتی ہے، اور انہیں #undef کمانڈ سے ہٹایا جا سکتا ہے۔ یہ میکرو ڈیولپرز کو دوبارہ قابل استعمال کوڈ کے ٹکڑوں کی وضاحت کرنے کے لیے بااختیار بناتے ہیں، جو دہرائے جانے والے کاموں کو آسانی کے ساتھ ہموار کرتے ہیں۔ یہ مضمون میکرو افعال کی تفصیلات، ان کی خصوصیات، استعمال کے معاملات، اور ممکنہ فوائد پر روشنی ڈالتا ہے۔

میکرو فنکشن کیا ہے؟

میکرو فنکشن C++ کوڈ کا ایک چھوٹا، دوبارہ قابل استعمال جزو ہے جو #define ڈائریکٹیو کے ساتھ لکھا جاتا ہے۔ میکرو ایک متنی متبادل میکانزم کے طور پر کام کرتا ہے جہاں کوڈ کے اندر اس کے نام کی کسی بھی صورت کو پری پروسیسر مرحلے کے دوران اس کے متعین کوڈ بلاک سے بدل دیا جاتا ہے۔ میکرو فنکشنز خاص طور پر دہرائے جانے والے کاموں، پیرامیٹرائزڈ آپریشنز، اور کوڈ کو سنبھالنے کے لیے فائدہ مند ہوتے ہیں جن کے لیے مختلف منظرناموں میں موافقت کی ضرورت ہوتی ہے۔







میکرو فنکشن کا نحو:

میکرو فنکشن کی وضاحت کے لیے نحو میں #define ڈائریکٹیو کا استعمال کرنا شامل ہے جس کے بعد میکرو نام، پیرامیٹر کی فہرست (اگر کوئی ہے) اور کوڈ بلاک شامل ہے۔ یہاں ایک بنیادی مثال ہے:



# مربع کی وضاحت کریں۔ ( مربع ) ( ( مربع ) * ( مربع ) )



اس مثال میں، 'Squre' ایک میکرو فنکشن ہے جو ایک پیرامیٹر 'sq' لیتا ہے اور اس کے مربع کا حساب لگاتا ہے۔ دوہرے قوسین درست تشخیص کو یقینی بناتے ہیں، خاص طور پر جب پیرامیٹر میں تاثرات شامل ہوں۔





اب، آئیے مثالوں کے سیکشن کی طرف بڑھتے ہیں یہ جاننے کے لیے کہ C++ پروگرام میں میکرو فنکشن کب استعمال کرنا ہے۔

C++ میکرو فنکشنز کی ایپلی کیشنز

میکرو فنکشنز پروگرامنگ کے مختلف منظرناموں میں اہمیت رکھتے ہیں، جو ڈویلپرز کو ایک ورسٹائل کوڈ آپٹیمائزیشن اور آسان بنانے کا ٹول فراہم کرتے ہیں۔ آئیے کچھ زبردست استعمال کے معاملات کو تلاش کرتے ہیں جو C++ میں میکرو فنکشنز کی تاثیر کو نمایاں کرتے ہیں۔



منظر نامہ 1: کوڈ دوبارہ قابل استعمال

میکرو فنکشن ایسے منظرناموں میں ایکسل ہوتے ہیں جہاں پورے پروگرام میں ایک مخصوص کوڈ پیٹرن کو دہرایا جاتا ہے۔ کوڈ کو میکرو میں سمیٹ کر، ڈویلپرز آسانی سے اسے دوبارہ استعمال کر سکتے ہیں، ایک صاف ستھرا اور زیادہ قابل برقرار کوڈ کو فروغ دے سکتے ہیں۔ درج ذیل پروگرام میں، ہم دیے گئے نمبروں کے متعدد رقوم کا حساب لگانے کے لیے میکرو فنکشن استعمال کریں گے۔ آئیے پہلے کوڈ دیکھیں اور پھر اس کی تفصیل سے وضاحت کریں:

# شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std؛



# ADD(ab, yz) ((ab) + (yz)) کی وضاحت کریں



اہم int ( ) {



int sum1 ADD ( 9 ، 3 ) ;

cout << '9 اور 3 کا مجموعہ =' << sum1 << endl



int sum2 ADD ( گیارہ ، 7 ) ;

cout << '11 اور 7 کا مجموعہ =' << sum2 << endl



int سی ڈی = 8 , wx = 4 ;



int sum3 = ADD ( سی ڈی ، ڈبلیو ایکس ) ;

cout << '8 اور 4 کا مجموعہ =' << sum3 << endl



واپسی 0 ;

}

'#include ' ہیڈر فائل ان پٹ اور آؤٹ پٹ آپریشنز جیسے cout اور cin کے لیے فنکشن فراہم کرتی ہے۔ '#define ADD(ab, yz) ((ab) + (yz))' ADD نامی ایک میکرو فنکشن کی وضاحت کرتا ہے جو دو دلائل لیتا ہے، 'ab' اور 'yz'۔ میکرو پری پروسیسر ڈائریکٹیو کا استعمال کرتا ہے جو کہ تالیف کے دوران ADD(ab, yz) کی کسی بھی صورت کو اصل اظہار (ab) + (yz) سے بدلنے کے لیے #define ہے۔ پروگرام کا انٹری پوائنٹ، جہاں کوڈ پر عمل درآمد شروع ہوتا ہے، 'int main()' ہے۔

ADD میکرو کا استعمال کرتے ہوئے، ہم دو رقوم کا حساب لگاتے ہیں: ایک ہے 9 اور 3 اور دوسری ہے 11 اور 7۔ ہم ان دو رقوم کے لیے براہ راست نمبر ADD میکرو کو دیتے ہیں۔ تاہم، تیسری رقم کے لیے، ہم متغیرات کا استعمال کرتے ہوئے نمبر پاس کرتے ہیں۔ نمبر 8 اور 4 بالترتیب 'cd' اور 'wx' متغیر میں محفوظ ہیں، جو بعد میں ADD میکرو کو بھیجے جاتے ہیں۔

'int sum1 = ADD(9, 3);' لائن 9 اور 3 کا مجموعہ 'sum1' متغیر کو تفویض کرتی ہے۔ میکرو ADD(9, 3) کو تالیف کے دوران 9 + 3 سے تبدیل کیا جاتا ہے جس کے نتیجے میں 8 کی قدر ہوتی ہے جو 'sum1' میں محفوظ ہوتی ہے۔ 'int sum2 = ADD(11, 7);' لائن مختلف دلائل کے ساتھ میکرو کو دوبارہ استعمال کرنے کا مظاہرہ کرتی ہے۔ 'sum2' میں، کل 11 اور 7 رکھا گیا ہے۔

آخر میں، 'int cd = 8، wx = 4؛ int sum3 = ADD(cd, wx);' مثال متغیر کے ساتھ میکرو کا استعمال کرتے ہوئے دکھاتی ہے۔ 'cd' اور 'wx' کی اقدار ADD کے لیے دلیل کے طور پر استعمال ہوتی ہیں جس کے نتیجے میں رقم کو 'sum3' میں تفویض کیا جاتا ہے۔ یہاں آؤٹ پٹ ہے:

جیسا کہ آپ اس مثال میں مشاہدہ کر سکتے ہیں، ADD میکرو فنکشن دو پیرامیٹرز لیتا ہے۔ یہ اضافی آپریشن کرتا ہے، مختلف اقدار اور متغیرات کے ساتھ اس کے استعمال کو ظاہر کرتا ہے، اور نتائج کو کنسول پر پرنٹ کرتا ہے۔ اس میکرو فنکشن کا استعمال کرتے ہوئے، ہم پورے پروگرام میں اضافی منطق کو آسانی سے دوبارہ استعمال کر سکتے ہیں۔ یہ ایک صاف ستھرا اور زیادہ برقرار رکھنے کے قابل کوڈ کو فروغ دیتا ہے، خاص طور پر جب متعدد مقامات پر ایک ہی اضافی آپریشن کی ضرورت ہو۔

منظر نامہ 2: پیرامیٹرائزڈ آپریشنز

میکرو فنکشنز پیرامیٹرز کے ساتھ آتے ہیں جو ڈیولپرز کو ایک عام کوڈ بنانے کی اجازت دیتے ہیں جو مختلف ان پٹ اقدار کے مطابق ڈھالنے کے قابل ہو۔ یہ خاص طور پر ان کارروائیوں کے لیے فائدہ مند ہے جو متغیر پیرامیٹرز کے ساتھ انجام دیے جائیں۔ آئیے درج ذیل مثال دیکھتے ہیں:

# شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std؛



# MAXI(ab, yz) ((ab) > (yz) ? (ab) : (yz)) کی وضاحت کریں



اہم int ( ) {



int max1 = MAXI ( 9 ، 3 ) ;

cout << max1 << '9 اور 3 کے درمیان زیادہ سے زیادہ ہے' << endl << endl



int kl = 12 ، st = 9 ;

int max2 = MAXI ( kl، st ) ;

cout << max2 << 'کے درمیان زیادہ سے زیادہ ہے' << پر << 'اور' << st << endl << endl



int max3 = MAXI ( 3 * kl, wed + 5 ) ;

cout << max3 << '3 * کے درمیان زیادہ سے زیادہ ہے' << پر << 'اور' << st << '+5' << endl



واپسی 0 ;

}



میکرو تعریف: # MAXI(ab, yz) ((ab) > (yz) ? (ab) : (yz)) کی وضاحت کریں

یہ لائن MAXI نامی ایک میکرو فنکشن کی وضاحت کرتی ہے جو دو پیرامیٹرز، 'ab' اور 'yz' لیتی ہے، اور ٹرنری آپریٹر کا استعمال کرتے ہوئے زیادہ سے زیادہ دو قدریں واپس کرتی ہے۔

مستقل کے ساتھ میکرو فنکشن کا استعمال کرتے ہوئے، int max1 = MAXI(9, 3)، ہم 9 اور 3 کے درمیان زیادہ سے زیادہ تعداد کا حساب لگاتے ہیں، اور نتیجہ 'max1' میں محفوظ ہوتا ہے۔ نتیجہ پھر کنسول پر ظاہر ہوتا ہے۔

'kl' اور 'st' متغیر کے ساتھ میکرو فنکشن کا استعمال کرتے ہوئے، ان متغیرات میں دو نمبرز محفوظ کیے جاتے ہیں جو کہ ان کے درمیان زیادہ سے زیادہ تعداد تلاش کرنے کے لیے پھر MAXI میکرو فنکشن کو بھیجے جاتے ہیں۔ میکرو فنکشن کو 'kl' اور 'st' متغیر کے ساتھ دوبارہ استعمال کیا جاتا ہے جو یہ ظاہر کرتا ہے کہ یہ مستقل اور متغیر دونوں کے ساتھ کام کرتا ہے۔ میکرو فنکشن (3 * kl اور st + 5) اظہار پر لاگو کیا جاتا ہے، مختلف ان پٹ اقسام کے ساتھ اس کی موافقت کو ظاہر کرتا ہے۔ جب آپ اس کوڈ کو چلاتے ہیں، تو آپ کو مندرجہ ذیل جیسا آؤٹ پٹ نظر آنا چاہیے:

دی گئی مثال میں، MAXI میکرو فنکشن دو نمبروں کے درمیان زیادہ سے زیادہ قدر کا تعین کرتا ہے۔ مرکزی فنکشن اس میکرو کے استعمال کو مستقل اقدار، متغیرات اور یہاں تک کہ اظہار کے ساتھ ظاہر کرتا ہے۔ نتیجہ پھر کنسول پر ظاہر ہوتا ہے۔ یہ ظاہر کرتا ہے کہ کس طرح MAXI میکرو فنکشن مختلف ان پٹ اقدار اور اظہارات کے مطابق ہوتا ہے، زیادہ سے زیادہ قدر تلاش کرنے کے لیے ایک عمومی طریقہ کار فراہم کرتا ہے۔

منظر نامہ 3: مشروط تالیف

میکرو تالیف کے دوران کوڈ کے بعض حصوں کو آن یا آف کرنے میں اہم کردار ادا کرتے ہیں۔ یہ پلیٹ فارم کے لیے مخصوص کوڈ کو شامل کرنے یا فیچر ٹوگلز کو منظم کرنے کے لیے قابل قدر ہے۔

# شامل کریں

#DEBUG_MODE کی وضاحت کریں۔

اہم int ( ) {
#ifdef DEBUG_MODE
std::cout << 'ارے، کلثوم! ڈیبگ موڈ فعال ہے۔' << std::endl;
#ختم کرو اگر

واپسی 0 ;
}

اس مثال میں، '#define DEBUG_MODE' لائن DEBUG_MODE نامی میکرو کی وضاحت کرتی ہے۔ اگر یہ لائن غیر تبصرہ شدہ ہے، تو اس کا مطلب ہے کہ ڈیبگ موڈ فعال ہے۔ اگر اس پر تبصرہ کیا جاتا ہے تو، ڈیبگ موڈ کو غیر فعال کر دیا جاتا ہے۔ '#ifdef DEBUG_MODE' ہدایت چیک کرتی ہے کہ آیا DEBUG_MODE میکرو کی وضاحت کی گئی ہے۔ اگر اس کی وضاحت کی گئی ہے (غیر تبصرہ شدہ)، #ifdef اور #endif کے اندر موجود کوڈ کو تالیف کے دوران شامل کیا جائے گا۔ اگر اس کی وضاحت نہیں کی گئی ہے (تبصرہ کیا گیا ہے)، تو کوڈ کے اس حصے کو خارج کر دیا جائے گا۔

یہ مشروط تالیف کی تکنیک مختلف تالیف کی ترتیبات کی بنیاد پر کوڈ کی مختلف حالتوں کو منظم کرنے کے لیے طاقتور ہے۔ یہ عام طور پر ڈیبگنگ کے لیے استعمال ہوتا ہے جہاں صرف ضرورت کے وقت ڈیبگ کے لیے مخصوص کوڈ شامل کیا جاتا ہے، اور متعلقہ میکرو کی وضاحت یا تبصرہ کر کے اسے آسانی سے آن یا آف کیا جا سکتا ہے۔ مندرجہ ذیل آؤٹ پٹ دیکھیں:

جیسا کہ آپ دیکھ سکتے ہیں، #ifdef اور #endif کے درمیان کوڈ کو ایگزیکیویٹ کر کے کنسول پر پرنٹ کر دیا گیا ہے، جس میں 'Hey, Kalsoom! ڈیبگ موڈ فعال ہے' پیغام۔ میکرو فنکشنز پورے کوڈ بیس میں مستقل تبدیلیاں کرنے کے عمل کو آسان بناتے ہیں۔ اگر کسی ترمیم کی ضرورت ہو تو، میکرو تعریف میں ردوبدل اس بات کو یقینی بناتا ہے کہ جہاں بھی میکرو استعمال کیا جاتا ہے وہاں تبدیلی یکساں طور پر لاگو ہوتی ہے۔

نتیجہ

آخر میں، C++ میں میکرو فنکشنز کوڈ کی لچک اور کارکردگی کو بڑھانے کے لیے ایک طاقتور طریقہ کار پیش کرتے ہیں۔ ڈویلپرز کوڈ بلاکس کو سمیٹنے، دوبارہ قابل استعمال کو فروغ دینے، اور دہرائے جانے والے کاموں کو ہموار کرنے کے لیے #define ہدایت کا فائدہ اٹھا سکتے ہیں۔ میکرو فنکشنز کے نحو، استعمال کے کیسز، اور فوائد کو سمجھنا پروگرامرز کو اپنے کوڈ بیس کو بہتر بنانے اور ایک صاف ستھرا اور زیادہ برقرار رکھنے کے قابل C++ پروگرام کو فروغ دینے کے لیے ایک قیمتی ٹول سے لیس کرتا ہے۔ سوچ سمجھ کر استعمال کرنے اور بہترین طریقوں پر عمل کرنے کے ذریعے، میکرو فنکشنز ایک ڈویلپر کی ٹول کٹ کے لیے لازمی ہو جاتے ہیں جو کوڈ کی کارکردگی اور برقرار رکھنے میں اہم کردار ادا کرتا ہے۔