সি ++ / সিএক্স এবং সি ++ / সি এল আই কী কী এবং তারা সি ++ এবং উইনআরটি এর সাথে কীভাবে সম্পর্কযুক্ত?


31

আমি মেট্রো অ্যাপ্লিকেশনগুলি ডিজাইনের জন্য সি ++ শেখার চ্যালেঞ্জ গ্রহণ করার বিষয়টি বিবেচনা করছি এবং আমি যখন সি ++ / সিএক্স পেরিয়ে এসেছি।

মেট্রো অ্যাপ্লিকেশনগুলি কি সি ++ 11 এ কোড করা যাবে? তাদের কাজ করার জন্য কি সি ++ / সিএক্স প্রয়োজন? এবং সি ++ / সিএক্স আসলে কি? কেবলমাত্র সি ++ ব্যবহার করে কোনও মেট্রো অ্যাপ তৈরি করা সম্ভব, বা সি ++ / সিএক্স প্রয়োজনীয়? এছাড়াও, এই ছবিতে সি ++ / সিএলআই কীভাবে বাঁধা?


এছাড়াও সি ++ / সি এক্স ব্যবহার এখন নিরুৎসাহিত করা হয় (সি ++ / WinRT পছন্দ করা হয়), দেখতে ডক্স
SWdV

উত্তর:


28

মাইক্রোসফ্ট কেবলমাত্র একটি সি ++ সিস্টেম তৈরি করত যা আপনাকে তাদের উইন্ডোজ এপিআই (উইন 32 নামে পরিচিত) অ্যাক্সেস করতে দেয়, তারপরে একদিন তারা আবিষ্কার করে N

সুতরাং তারা "সি ++ এর জন্য পরিচালিত এক্সটেনশানস" তৈরি করেছিলেন যা মূলত সি ++ ছিল তবে মান-বহির্ভূত এক্সটেনশনের লোড সহ, কীটওয়ার্ডগুলি যোগ __gcকরতে পছন্দ করে। নেট বৈশিষ্ট্যগুলি (নেটিভের তুলনায় জিসির হ্যাপে বরাদ্দ দেওয়ার মতো)

তবে লোকেরা এটি পছন্দ করে না কারণ এটি সমস্ত অতিরিক্ত কীওয়ার্ড রয়েছে, তাই সি ++, তাই মাইক্রোসফ্ট এটিকে নতুন করে ডিজাইন করে সি ++ / সি এলআই নামে পরিচিত, যার অতিরিক্ত কীওয়ার্ডগুলির একটি খুব ছোট সেট ছিল তবে এর মতো সিনট্যাক্স পরিবর্তনগুলি প্রবর্তিত ^(যা হ'ল জিসি হিপের একটি .NET অবজেক্টের একটি রেফারেন্স 'পয়েন্টার')।

কয়েক বছর পরে এবং মাইক্রোসফ্ট বুঝতে পেরেছে। নেট তারা যে রূপালী বুলেট বলেছিল তা নয়, এবং তারা তাদের লড়াইয়ে নিযুক্ত উইন্ডোজ এবং বিকাশকারী দলগুলিকে একীভূত করেছিল। এই পুনর্মূল্যায়নের অংশটি একটি নতুন উইন্ডোজ এপিআই তৈরি করেছিল যা উইনআরটি নামে পরিচিত, এটি সম্পূর্ণ নেটিভ কোড এবং এর অর্থ পুরানো এক্সটেনশনগুলি আর কার্যকর ছিল না, তাই মাইক্রোসফ্ট তাদের সি ++ এক্সটেনশনগুলি এমন একটিতে তৈরি করেছিল যা নতুনটির সাথে কাজ করে উইনআরটি এপিআই সহজ - সি ++ / সিএলআই থেকে কিছু এক্সটেনশন রেখে (যেমন ^)।

সুতরাং - আপনি সেখানে যান, বর্ধিত সি ++ এর 3 টি ভিন্ন সংস্করণ যা অতিমাত্রায় সি ++। কমপক্ষে সর্বশেষতম সংস্করণটি আবার দেশীয় কোড, সুতরাং আপনি সরাসরি API এ অ্যাক্সেস করতে না চাইলে আপনার এক্সটেনশনগুলি ব্যবহার করার দরকার নেই (এটি ডাব্লুআরএল বলা হয় এবং এটি অনেকটা পুরানো এটিএল টেম্পলেট শ্রেণীর মতো)

যদি আপনি মনে করেন যে আপনি ক্রস-প্ল্যাটফর্ম কোডটি কোডিং করছেন যা আপনি চান না - আপনি এপিআই কলগুলি পরিবর্তন করতে পারেন, তবে আপনি ^ভিজ্যুয়াল সি ++ ব্যতীত অন্য কোনও সংকলকটিতে এটি ব্যবহার করতে পারবেন না । আমি ডাব্লুআরএল এপিআই ব্যবহার করার পরামর্শ দিচ্ছি এবং সি ++ / সিএক্স এর তুলনায় আপনার লিখতে হবে এমন 'অতিরিক্ত কোড' দেওয়ার কারণে আপনার কোডটি যথাসম্ভব স্ট্যান্ডার্ড হিসাবে রাখা উচিত।


দ্রষ্টব্য: সি ++ / সিএক্স শেষ অবধি উল্লেখ করা হয়নি; এটির অনুচ্ছেদে কোনটি স্পষ্ট করে বলতে ভাল লাগবে।
এখর্জন

11

Http://blogs.msdn.com/b/vcblog/archive/2012/08/29/cxxcxpart00anintrration.aspx উদ্ধৃত :

। । । সি ++ / সিএক্স সি ++ / সিএলআই-এর মতো সিন্টেক্সিকভাবে অনুরূপ এবং এইভাবে বিভিন্ন উপায়ে প্রায় একই দেখায়, এটি শব্দার্থগতভাবে একেবারেই আলাদা। সি ++ / সিএক্স কোড স্থানীয় কোড, কোনও সিএলআর প্রয়োজন হয় না। সি ++ / সিএলআই-তে প্রোগ্রামিং করা খুব চ্যালেঞ্জিং হতে পারে, কারণ একই সাথে একজনকে একই সঙ্গে দুটি খুব আলাদা অবজেক্ট মডেলটি জাগ্রত করতে হবে: সি ++ অবজেক্ট মডেলটি এর ডিটারমিনিস্টিক অবজেক্টের লাইফটাইম এবং আবর্জনা-সংগৃহীত সিএলআই অবজেক্ট মডেল। সি ++ / সিএক্স এর সাথে কাজ করা অনেক সহজ, কারণ সিওএম ভিত্তিক উইন্ডোজ রানটাইম সি ++ প্রোগ্রামিং ভাষাতে খুব ভাল মানচিত্র করে।

উইন্ডোজ রানটাইম তুলনামূলকভাবে সহজ, নিম্ন-স্তরের অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (এবিআই) এবং সংজ্ঞা দেয় যে উপাদানগুলি একটি সাধারণ মেটাডেটা ফর্ম্যাট ব্যবহার করে তাদের প্রকারগুলি সংজ্ঞায়িত করে। দেশীয় উইন্ডোজ রানটাইম উপাদানটি লেখার জন্য সি ++ / সিএক্সের কঠোরভাবে প্রয়োজন হয় না: সি ++ / সিএক্স ভাষা এক্সটেনশনগুলি ব্যবহার না করে সি ++ ব্যবহার করে উইন্ডোজ রানটাইম উপাদানগুলি লেখার পক্ষে যথেষ্ট সম্ভাবনা রয়েছে এবং ভিজ্যুয়াল সি ++ 2012 সালে একটি লাইব্রেরি রয়েছে, উইন্ডোজ রানটাইম সি ++ টেম্পলেট লাইব্রেরি ( এটি আরও সহজ করে তুলতে সহায়তার জন্য ডাব্লুআরএল)। উইন্ডোজের অংশ হিসাবে জাহাজ চালানো উইন্ডোজ রানটাইম উপাদানগুলির অনেকগুলি (উইন্ডোজ নেমস্পেসে) ডাব্লুসিআরএল ব্যবহার করে লেখা হয়। সি ++ / সিএক্সে কোনও জাদু নেই: এটি কেবল উইন্ডোজ রানটাইম উপাদানগুলিকে সি ++ তে অনেক বেশি, আরও সহজ সরল করে তোলে এবং ডাব্লুটিআরএল-এর মতো লাইব্রেরি ভিত্তিক সমাধান ব্যবহার করার সময় আপনাকে যে পরিমাণ পুনরাবৃত্তি এবং ভার্বোজ কোড লিখতে হবে তা হ্রাস করতে সহায়তা করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.