سؤال

لقد قرأت بعض المقالات حول بنات Windows C المختلفة ، و Wmain و WinMain.

لذلك ، إذا كنت على صواب ، يتم إضافة هذه إلى مجمعات لغة C لنظام التشغيل Windows OS. ولكن ، كيف يتم تنفيذها؟

على سبيل المثال ، يحصل WMAIN على Unicode كـ Argv [] ، ولكن نظام التشغيل الذي يرسل هذه الوسائط إلى البرنامج ، فهل هناك أي مجال خاص في إدخال ملف .exe الذي يقول لنظام التشغيل Windows لتمرير Arguemnts كحوض يونيكود؟ شكرًا.

هل كانت مفيدة؟

المحلول

الإصدارات الحديثة من Windows تستخدم داخليًا UTF-16. لذلك ، عندما تقوم بتشغيل عملية تنفيذ قابلة للتنفيذ ، يتم تمرير جميع وسيطات سطر الأوامر على الأرجح كـ UTF-16 من البداية ، ومكتبة وقت التشغيل المرتبطة بالتطبيق الذي تم إطلاقه إما يمرر الوسيطات من خلال سالمين (إذا كنت تستخدم wmain) أو يحولها إلى الترميز المحلي تلقائيًا (إذا كنت تستخدم main). (على وجه التحديد سيتم ذلك بواسطة wmainCRTStartup/mainCRTStartup وهي نقاط الدخول الفعلية المستخدمة لتطبيقات Windows Console.)

نصائح أخرى

أولاً: التشدق المتحار: من المؤكد أن WMAIN لا تحصل على حجج أحادية. يتم تعريف Unicode بشكل مستقل من أي تشفير معين. يحصل WMAIN على حجج في تشفير حرف 16 بت من Unicode ، UTF-16 بتخمين. لقد راجعت للتو وثائق Microsoft على Wmain والروابط منه ومن الواضح أن Microsoft ليس لديها أدنى فكرة حول ماهية Unicode عندما كتبوها.

على أي حال ، يتم تعريف نقطة دخول البرنامج بواسطة الرابط. يحتوي برنامج AC دائمًا على قدر معين من رمز Prologue الذي يتم تشغيله قبل Main/Wmain/WinMain/Wwinmain. إذا تم استخدام أحد الإصدارات الواسعة من Main ، فإن رمز Prologue يحول الأحرف في البيئة من أي مجموعة من الأحرف التي تكون موجودة إلى إصدار الحرف الواسع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top