অবজেক্টিভ সি হ'ল সি'র পিছনে সামঞ্জস্যপূর্ণ এক্সটেনশনের একটি সেট এটি সম্ভব কারণ কারণ উদ্দেশ্য সি বৈশিষ্ট্য দুটি খুব সাধারণ উপায়ে সীমিত করা হয়েছে:
- চরিত্রের ব্যবহার
@। এই চরিত্রটি বর্তমানে সি ভাষায় ব্যবহৃত হয় না।
- অনুরোধ পদ্ধতিগুলির জন্য একটি সাধারণ সিনট্যাকটিক এক্সটেনশন
[obj method:argument],। সি তে বর্গাকার বন্ধনীগুলি অ্যারে সাবস্ক্রিপিংয়ের জন্য খুব নির্দিষ্ট উপায়ে ব্যবহার করা হয় এবং তাই এটি অবৈধ সি সিনট্যাক্স। অবৈধ সিনট্যাক্সের উপর নির্মিত এক্সটেনশানগুলি হোস্ট ভাষায় বৈধ যে কোনও কিছুর অর্থ পরিবর্তন করে না।
এটি দেখতে এত সহজ যে কোনও প্রোগ্রাম যা ওজেক্টিভ সি এক্সটেনশানগুলি ব্যবহার করে তা কঠোরভাবে মেনে চলার আইএসও সি প্রোগ্রাম হতে পারে না, যতই সহজ। তদুপরি, প্রতিটি আইএসও সি প্রোগ্রামকে সংজ্ঞা অনুসারে, একটি বৈধ অবজেক্টিভ সি প্রোগ্রাম হিসাবে ঘোষণা করা যেতে পারে। উদ্দেশ্য সি সহজে সি 99 এবং সি 11 এর মতো বিকাশগুলি অনুসরণ করতে পারে।
অন্যদিকে, সি ++ কেবল সি-তে বাড়ানো হয় না; এটি একটি আলাদা ভাষা যা সি সি ++ এবং সি এর কিছু বাক্য গঠনটির অর্থ পরিবর্তিত করে এবং তাই সময়ের সাথে তাদের সম্পর্ক পরিবর্তিত হয়। উদাহরণস্বরূপ, সি নতুন বৈশিষ্ট্যগুলি অর্জন করেছে যা সি ++ এ সম্পূর্ণ অনুপস্থিত এবং সম্ভবত C ++ এ যাবে না, যেমন C99 ভেরিয়েবল-দৈর্ঘ্যের অ্যারেগুলি। সি ++ সহজেই নতুন সি বৈশিষ্ট্যগুলি তুলতে পারে না।
আপনি যদি কোনও পোর্টেবল সি প্রোগ্রাম লেখেন তবে এটি একই সাথে একটি উদ্দেশ্য সি প্রোগ্রাম হওয়া উচিত। তবে অতিরিক্ত যত্নের প্রয়োজন হবে যাতে এটি একই অর্থ সহ সি ++ প্রোগ্রাম। (এই অনুশীলনটি শোনা যায় না, এবং এর জন্য প্রয়োজনীয় উপভাষাটি অনানুষ্ঠানিকভাবে "ক্লিন সি" নামে পরিচিত)।
সি প্রোগ্রামের একটি তুচ্ছ উদাহরণ যা সি ++ হিসাবে চিকিত্সা করার সময় ভেঙে যায় এমন কোনও সি প্রোগ্রাম যা একটি সি ++ কীওয়ার্ডকে সনাক্তকারী হিসাবে ব্যবহার করে, যেমন classবা virtual। উদ্দেশ্য সি কোনও সংরক্ষিত কীওয়ার্ড প্রবর্তন করে না। এটির মতো নতুন কীওয়ার্ড রয়েছে যা @চরিত্রের মাধ্যমে প্রবর্তিত হয় @interface।