_tmain
সি ++ তে বিদ্যমান নেই। main
আছে।
_tmain
একটি মাইক্রোসফ্ট এক্সটেনশন।
main
, সি ++ স্ট্যান্ডার্ড অনুযায়ী, প্রোগ্রামটির প্রবেশের পয়েন্ট। এটিতে এই দুটি স্বাক্ষরের একটি রয়েছে:
int main();
int main(int argc, char* argv[]);
মাইক্রোসফ্ট একটি ওয়াইন যোগ করেছে যা এটির সাথে দ্বিতীয় স্বাক্ষরটি প্রতিস্থাপন করে:
int wmain(int argc, wchar_t* argv[]);
এবং তারপরে, ইউনিকোড (ইউটিএফ -16) এবং তাদের মাল্টিবাইট অক্ষর সেটগুলির মধ্যে স্যুইচ করা সহজ করার জন্য, তারা সংজ্ঞায়িত করেছে _tmain
যে, যদি ইউনিকোড সক্ষম করা থাকে তবে হিসাবে সংকলিত হয় wmain
এবং অন্যথায় main
।
আপনার প্রশ্নের দ্বিতীয় অংশ হিসাবে, ধাঁধার প্রথম অংশটি হ'ল আপনার মূল ফাংশনটি ভুল। wmain
একটি wchar_t
যুক্তি নেওয়া উচিত , না char
। যেহেতু সংকলক main
ফাংশনটির জন্য এটি প্রয়োগ করে না , আপনি একটি প্রোগ্রাম পান যেখানে wchar_t
স্ট্রিংগুলির একটি অ্যারে main
ফাংশনে প্রেরণ করা হয় , যা তাদের char
স্ট্রিং হিসাবে ব্যাখ্যা করে ।
এখন, ইউটিএফ -16 এ, ইউনিকোড সক্ষম করার সময় উইন্ডোজ দ্বারা ব্যবহৃত অক্ষর সেট করা হয়েছে, সমস্ত ASCII অক্ষর \0
ASCII মান অনুসারে বাইটের জুটি হিসাবে উপস্থাপিত হয়।
এবং যেহেতু x86 সিপিইউ ছোট-এন্ডিয়ান, এই বাইটগুলির ক্রমটি অদলবদল করা হয়, যাতে ASCII মানটি প্রথমে আসে, তারপরে নাল বাইট হয়।
এবং একটি চর স্ট্রিং মধ্যে, স্ট্রিং সাধারণত কিভাবে সমাপ্ত হয়? হ্যাঁ, নাল বাইট দ্বারা সুতরাং আপনার প্রোগ্রামটি স্ট্রিংগুলির একটি গোছা প্রত্যেকে প্রত্যেকে দীর্ঘ বাইট দেখে sees
সাধারণভাবে উইন্ডোজ প্রোগ্রামিং করার সময় আপনার কাছে তিনটি বিকল্প রয়েছে:
- সুস্পষ্টভাবে ইউনিকোড ব্যবহার করুন (কল উইমেন, এবং প্রতিটি উইন্ডোজ এপিআই ফাংশনের জন্য যা চর-সম্পর্কিত আর্গুমেন্ট গ্রহণ করে,
-W
ফাংশনের সংস্করণটি কল করুন Create উইন্ডো উইন্ডোর পরিবর্তে, ক্রিয়েটওয়াইন্ডো ডাব)। এবং char
ব্যবহার না করে wchar_t
, এবং আরও
- স্পষ্টতই ইউনিকোড অক্ষম করুন। মুখ্য কল করুন এবং ক্রিয়েট উইন্ডোএ, এবং
char
স্ট্রিংয়ের জন্য ব্যবহার করুন ।
- উভয়কে অনুমতি দিন। (_tmain এবং ক্রিয়েট উইন্ডোকে কল করুন, যা প্রধান / _tmain এবং ক্রিয়েটওয়াইন্ডো / ক্রিয়েটওয়াইনডাব্লুতে সংশোধন করে) এবং গৃহস্থালি / wchar_t এর পরিবর্তে TCHAR ব্যবহার করে।
উইন্ডোজের দ্বারা সংজ্ঞায়িত স্ট্রিং ধরণের ক্ষেত্রেও এটি একই প্রযোজ্য .h
নোট করুন যে এই সমস্তগুলি মাইক্রোসফ্ট নির্দিষ্ট। টিসিএইচএআর কোনও স্ট্যান্ডার্ড সি ++ টাইপ নয়, এটি উইন্ডোজ এইচডি-তে সংজ্ঞায়িত ম্যাক্রো। wmain এবং _tmain এছাড়াও শুধুমাত্র মাইক্রোসফ্ট দ্বারা সংজ্ঞায়িত করা হয়।