সি এখনও প্রাচীনতম ভাষাগুলির মধ্যে একটি। এর এবিআই সহজ, এবং কার্যত আজও ব্যবহৃত প্রতিটি অপারেটিং সিস্টেম এতে লেখা হয়েছে । যদিও এই ওএসগুলির মধ্যে কয়েকটি স্টাফ যুক্ত করেছে যেমন সি # /। নেট বা যে কোনও টপ-টপ, নীচে তারা সিতে খুব বেশি খাড়া রয়েছে down
এর অর্থ হ'ল, ওএস দ্বারা প্রদত্ত কার্যকারিতাটি ব্যবহার করার জন্য , কার্যত প্রতিটি প্রোগ্রামিং ভাষার জন্য যে কোনওভাবে সি লাইব্রেরিগুলির সাথে ইন্টারফেস করার একটি উপায় প্রয়োজন । পার্ল, জাভা, সি ++, তারা সবাই স্থানীয়ভাবে "টক সি" করার উপায় সরবরাহ করে, কারণ সেখানে থাকা প্রতিটি চক্রটিকে পুনরায় উদ্ভাবন করতে না চাইলে তাদেরকে তাদের করতে হয়েছিল।
এটি সি ভাষা প্রোগ্রামিং ভাষার লাতিন করে তোলে। (এই রূপকটির আগে ইন্টারনেটের কত বছর "" ক্রমবর্ধমান ভাষার ইংরেজি "হওয়া উচিত?)
আপনি যখন আপনার লাইব্রেরিটি সি-তে লিখছেন, তখন আপনি বিনামূল্যে সি (সামঞ্জস্যপূর্ণ) ইন্টারফেস পাবেন। আপনি যদি আপনার লাইব্রেরিটি সি ++ এ লিখছেন তবে আপনি উল্লিখিত ঘোষণার মাধ্যমে সি বাইন্ডিংগুলি পেতে পারেনextern "C"
।
যাইহোক , আপনি কেবল সেই কার্যকারিতার জন্য এই বাইন্ডিংগুলি পেতে পারেন যা সিতে প্রকাশ করা যেতে পারে ।
সুতরাং আপনার লাইব্রেরি এপিআই ব্যবহার করতে পারবেন না ...
- টেমপ্লেট
- ক্লাস,
- ব্যতিক্রম
- অবজেক্ট গ্রহণ বা ফিরিয়ে দেওয়া কোনও ফাংশন ।
একটি সহজ উদাহরণ, আপনার রফতানি কার্যগুলি (বা সেই বিষয়ে) এর পরিবর্তে অ্যারে ( ) নেওয়া এবং ফিরিয়ে আনা দরকার ।[]
std::vector
std::string
সুতরাং, না শুধুমাত্র আপনি ভাল জিনিস সি ++ আপনার লাইব্রেরির গ্রাহকদের দিতে হয়েছে কোনো প্রদান করতে অক্ষম হবে, এছাড়াও আপনি যেতে হবে অতিরিক্ত প্রচেষ্টা "অনুবাদ করা" C থেকে আপনার লাইব্রেরিতে এপিআই ++, থেকে "সি সামঞ্জস্যপূর্ণ" ( extern "C"
)।
সে কারণেই এই পয়েন্টটি তৈরি করা যেতে পারে যে লাইব্রেরি বাস্তবায়নের জন্য সিই সেরা পছন্দ। ব্যক্তিগতভাবে, আমি মনে করি যে সি ++ এর সুবিধাগুলি এখনও একটি extern "C"
এপিআইয়ের প্রয়োজনীয় প্রচেষ্টা ছাড়িয়ে যায় , তবে এটি কেবল আমারই।