আমি প্রায়শই লোকদের বলতে শুনেছি যে সি ++ প্রোগ্রামারদের তাদের লাইব্রেরির / পণ্যটির পাবলিক এপিআই সি সি এপিআই হিসাবে প্রকাশ করা উচিত।
এর অর্থ কী এবং এর সুবিধাগুলি কী?
আমি প্রায়শই লোকদের বলতে শুনেছি যে সি ++ প্রোগ্রামারদের তাদের লাইব্রেরির / পণ্যটির পাবলিক এপিআই সি সি এপিআই হিসাবে প্রকাশ করা উচিত।
এর অর্থ কী এবং এর সুবিধাগুলি কী?
উত্তর:
এর অর্থ এই নয় যে আপনার লাইব্রেরির যে অংশটি একটি ইন্টারফেস হিসাবে উদ্ভাসিত হয়েছে কেবলমাত্র ভাষার "সি" অংশ ব্যবহার করে, তাই আপনি ক্লাস বা অনুরূপ, কেবল ফাংশন, পিওডি এবং পিওডযুক্ত স্ট্রাক্ট রফতানি করছেন না। এছাড়াও, আপনাকে সি ++ নাম ম্যাংলিং অক্ষম করতে হবে, সাধারণত হিসাবে ফাংশন চিহ্নিত করে অর্জন করা extern "C"
। একটি সাধারণ উদাহরণ হবে:
extern "C" void foo(int bar);
এই ফ্যাশনে আপনার লাইব্রেরিগুলি প্রকাশের বড় সুবিধা হ'ল প্রতিটি প্রোগ্রামিং ভাষার বাইরে সি লাইব্রেরির সাথে সরাসরি ইন্টারফেস করার ব্যবস্থা রয়েছে তবে খুব কম লোকই সরাসরি সি ++ লাইব্রেরির সাথে ইন্টারফেস করতে পারে। সুতরাং সেই অর্থে, আপনার লাইব্রেরি ব্যবহার করা অন্য লোকের পক্ষে সহজ করার জন্য আপনি সর্বনিম্ন সাধারণ ডিনোমিনেটরের দিকে যান।
তবে মনে রাখবেন যে আপনি যদি অন্য লোকদের গ্রাহনের জন্য কোনও গ্রন্থাগার তৈরি করে থাকেন তবে এটি সত্যিই কেবল কার্যকর কৌশল। আপনি যদি সি ++ এর টুকরো তৈরি করে থাকেন - কেবলমাত্র সফ্টওয়্যার এবং গ্রন্থাগারগুলিতে কেবল একে অপরের সাথে ইন্টারফেস করা দরকার, আপনি উপযুক্ত আই ++ এপিআই প্রকাশ করা থেকে ভাল (আইএমএইচও) ভাল তাই আপনি ভাষার সম্পূর্ণ ক্ষমতা ব্যবহার করতে পারবেন।
extern "C"
পারেন, যা আমি পাইনি?
.hpp
, তবে এই বর্ধনের অর্থ "সি ++ শিরোনাম ফাইল", সুতরাং এটি হওয়া উচিত .h
, যা সি এবং সি ++ উভয়ের জন্যই ব্যবহৃত হয়।
টিমোর জবাব ছাড়াও - কিছু প্ল্যাটফর্মের জন্য কোনও স্ট্যান্ডার্ডাইজড সি ++ এবিআই নেই (উদাহরণস্বরূপ উইন্ডোজ - কিছু ম্যাক ওএস এক্সের লিনাক্সের মতো বহুলভাবে গৃহীত) সুতরাং এটি কেবল বৈশিষ্ট্য অনুপস্থিতির বিষয় নয় তবে এই জাতীয় বৈশিষ্ট্যটি বাস্তবায়নের অসম্ভবতাও নয়।
উদাহরণস্বরূপ আইআইআরসি এমএসভিসির প্রতিটি সংস্করণে আলাদা এবিআই থাকে এবং এটি ডিবাগ বা বিল্ড রিলিজ করা হয় তা নির্ভর করে এটি পরিবর্তিত হতে পারে - এবং এটি প্রকাশিত হয় না তাই তৃতীয় পক্ষের সংকলকগুলি সাধারণত সামঞ্জস্যপূর্ণ নয় (আমি কিছু তথ্য পড়ি যে আইসিসির কিছু সংস্করণ এমএসভিসির সাথে সামঞ্জস্যপূর্ণ) 2005 তবে এটি এনডিএ এর অধীনে প্রকাশিত তথ্য হতে পারে - পাইথন বলে স্রষ্টাদের পক্ষে প্রয়োজনীয় নয়) এবং তাদের নিজস্ব এবিআই ব্যবহার করুন। তাই অনুশীলনে ভাষার পরিবেশ কেবল সংকলক সংস্করণটিই সীমাবদ্ধ রাখে তা নয় পতাকাগুলিও limit
অবশেষে সি ++ এর আরও অনেক বেশি সংকলন-সময় বৈশিষ্ট্য রয়েছে। উদাহরণস্বরূপ জেনেরিকগুলি সাধারণত গতিসম্পন্ন টাইপ করা ভাষা ইত্যাদিতে থাকে না etc.