C سے C++ کال کریں۔

C S C Kal Kry



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

بنیادی باتوں کو سمجھنا

جب بات C سے C++ فنکشنز کو استعمال کرنے اور C++ اشیاء کو استعمال کرنے کی ہو تو کئی اہم عناصر پر غور کرنے کی ضرورت ہے:

C میں C++ کلاسز کا حوالہ دینا

C میں C++ کلاسز کا حوالہ دینے کے لیے ایک عام نقطہ نظر میں کلاسوں کے لیے پوائنٹرز کا استعمال شامل ہے جو C اور C++ کوڈ کے درمیان پاس کیے جا سکتے ہیں۔







نام منگل

نام کی ان تبدیلیوں کو روکنے کے لیے جو C میں شناخت کو متاثر کر سکتے ہیں، ناموں کو مستقل رکھنا بہت ضروری ہے۔ یہ یقینی بناتا ہے کہ C افعال اور اشیاء کو درست طریقے سے شناخت اور استعمال کر سکتا ہے۔



دوہری مقصد کے لیے ہیڈر فائل

ایک ہیڈر فائل ایک اہم کردار ادا کرتی ہے، جو C اور C++ دونوں کے لیے دوہری مقصد کی تکمیل کرتی ہے۔ اس میں وہ کلاس تعریفیں شامل ہیں جو C++ کے ذریعے قابل شناخت ہیں اور C کے لیے ایکسیسر کے افعال کو سمیٹتی ہیں۔



C سے C++ کال کرنے کا طریقہ

C سے C++ فنکشنز کو کال کرنے کے لیے، بیرونی 'C' ڈیکلریشن بہت ضروری ہے۔ جب C++ فنکشنز پر لاگو ہوتا ہے، تو یہ یقینی بناتا ہے کہ تالیف کے عمل کے دوران فنکشن کے ناموں کو C طرز (C-linkage کا استعمال کرتے ہوئے) میں برتا جائے۔ C C++ خصوصیات کو نہیں پہچانتا جیسے فنکشن اوور لوڈنگ اور نام مینگلنگ جو C++ تالیف کے دوران ہو سکتا ہے۔ بیرونی 'C' کا استعمال کرتے ہوئے، C++ مرتب کرنے والا فنکشن کے نام تیار کرتا ہے جو C کنونشنز کی پابندی کرتے ہیں، جس سے ہموار انٹرآپریبلٹی کی اجازت ہوتی ہے۔ یہ اعلامیہ ایک معیاری انٹرفیس فراہم کرتا ہے، جس سے ایک C کوڈ کو C++ فنکشنز تک رسائی اور استعمال کرنے کے قابل بناتا ہے، نام کے تنازعات یا مطابقت کے مسائل کا سامنا کیے بغیر۔ ذیل میں C سے C++ کال کرنے کی مثالیں ہیں۔ یہ سمجھنے کے لیے کہ یہ امتزاج کیسے کام کرتا ہے، آئیے ان واقعات کو مزید قریب سے دیکھتے ہیں۔





عملی مثالیں: C سے C++ کال کر کے دائرے کے رقبے کا حساب لگائیں۔

اس سادہ مثال میں، ہم آپ کی رہنمائی کریں گے کہ آپ C میں C++ فنکشن کو کال کرکے دائرے کے رقبے کا حساب کیسے لگا سکتے ہیں۔ یہ کوڈ ایک ہیڈر فائل (circle.h) اور ایک نفاذ فائل (circle.cpp) پر مشتمل ہے۔ کوڈ کے پہلے حصے میں ہیڈر فائل میں ایکسٹرن سی ڈیکلریشن شامل ہے۔ درج ذیل کوڈ کو دیکھیں۔ پھر، آئیے کوڈ کی ہر سطر پر انفرادی طور پر وضاحت کریں:

#ifndef CIRCLE_AREA
#CIRCLE_AREA کی وضاحت کریں۔

بیرونی 'سی' {

دگنا calculate_CArea ( دگنا rad ) ;

}

#ختم کرو اگر

دگنا Circle_CArea ( دگنا rad ) {

واپسی 3.14159 * rad * rad ;

}

آئیے ہر ایک حصے کو توڑتے ہیں:



#ifndef CIRCLE_AREA اور #define CIRCLE_AREA

یہ لائنیں ان گارڈز کا حصہ ہیں جو اس بات کو یقینی بناتی ہیں کہ ہیڈر فائل کے مواد کو تالیف کے عمل میں صرف ایک بار شامل کیا جائے۔ اگر CIRCLE_AREA کی وضاحت نہیں کی گئی ہے، تو اس کے بعد کا کوڈ شامل کیا جائے گا اور CIRCLE_AREA کی وضاحت کی جائے گی۔

بیرونی 'سی'

اس نحو کو یہ اعلان کرنے کے لیے استعمال کیا جاتا ہے کہ درج ذیل فنکشن میں C ربط ہے۔ یہ کوڈ لکھتے وقت ضروری ہے جسے C اور C++ دونوں سے کال کیا جائے گا۔

دگنا calculate_CArea ( دگنا rad ) ;

یہ لائن ایک فنکشن کا اعلان کرتی ہے جس کا نام 'calculate_Carea' ہے جو ڈبل آرگومنٹ (rad) لیتا ہے اور ڈبل لوٹاتا ہے۔

ہیڈر فائل میں ایکسٹرن 'C' ڈیکلریشن کمپائلر کو فنکشن کے لیے سی طرز کا ربط استعمال کرنے کے لیے مطلع کرتا ہے، جس سے اسے C کوڈ سے کال کیا جا سکتا ہے۔ دائرے کا رقبہ تلاش کرنے کے لیے اس کوڈ کو 'circle.h' فائل میں محفوظ کرکے استعمال کریں۔ ایک بار جب آپ اس ہیڈر فائل کو محفوظ کر لیتے ہیں، آپ کو بس اسے C++ پروگرام میں ہیڈر فائل کے طور پر شامل کرنا ہے اور مطلوبہ فنکشن انجام دینا ہے۔ درج ذیل C کوڈ ہے جو دائرے کے رقبے کا حساب لگاتا ہے۔ 'main.c' فائل میں C++ ہیڈر شامل ہے اور براہ راست 'Circle_Carea' کو کال کرتا ہے۔ درج ذیل کوڈ دیکھیں:

# 'circle.h' شامل کریں

int مرکزی ( ) {

دگنا ریڈز = 5.0 ;

دگنا رقبہ = Circle_CArea ( ریڈز ) ;

printf ( دائرے کا رقبہ ہے: %.2f \n ' ، رقبہ ) ;

واپسی 0 ;

}

یہ سادہ سی پروگرام 'circle.h' نامی پچھلی فائل میں بیان کردہ فنکشن کا استعمال کرتے ہوئے دائرے کے علاقے کا حساب لگاتا اور پرنٹ کرتا ہے۔ آئیے کوڈ کو توڑتے ہیں:

# 'circle.h' شامل کریں

اس لائن میں پروگرام میں 'circle.h' ہیڈر فائل کا مواد شامل ہے۔ ہیڈر فائل میں ممکنہ طور پر فنکشن ڈیکلریشنز یا میکروز شامل ہیں جو دائرے کے حساب سے متعلق ہیں۔

int مرکزی ( ) {

پروگرام کا عمل مرکزی فنکشن سے شروع ہوتا ہے، C پروگراموں کے لیے داخلے کا مقام۔

دگنا ریڈز = 5.0 ;

ڈبل قسم کے متغیر ریڈز کا اعلان اور 5.0 کی قدر کے ساتھ تفویض کیا جاتا ہے۔ یہ متغیر ممکنہ طور پر دائرے کے رداس کی نمائندگی کرتا ہے۔

دگنا رقبہ = Circle_CArea ( ریڈز ) ;

'Circle_Carea' نامی فنکشن کو رداس ریڈس کے ساتھ بطور دلیل کہا جاتا ہے اور نتیجہ متغیر علاقے میں محفوظ ہوتا ہے۔

printf ( دائرے کا رقبہ ہے: %.2f \n ' ، رقبہ ) ;

نتیجہ 'printf' کا استعمال کرتے ہوئے کنسول پر پرنٹ کیا جاتا ہے۔ 'حلقے کا رقبہ ہے: %.2f\n' سٹرنگ ایک فارمیٹ سٹرنگ ہے جس میں ایریا ویلیو کے لیے '%f' پلیس ہولڈر ہے۔ '%.2f' میں '.2' بتاتا ہے کہ صرف دو اعشاریہ جگہیں دکھائی جانی چاہئیں۔

واپسی 0 ;

مرکزی فنکشن 0 واپس کر کے ختم ہوتا ہے جو آپریٹنگ سسٹم میں پروگرام کے کامیاب عمل کی نشاندہی کرتا ہے۔

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

جیسا کہ آپ آؤٹ پٹ میں دیکھ سکتے ہیں، دائرے کا شمار شدہ رقبہ 78.54 ہے جو کہ رقبہ = 3.14*5*5 = 78.54 کا حساب ہے۔ علاقے کا حساب لگانے کے فنکشن کی تعریف 'circle.h' ہیڈر فائل میں کی گئی ہے جسے پھر C++ فائل میں بیرونی 'C' کی مدد سے بلایا جاتا ہے۔

نتیجہ

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