خلط تيارات الإخراج الواسعة والضيقة في نفس البرنامج
في "كتاب الطبخ C" ، يذكر أن خلط cout و wcout في لا ينبغي أن يتم نفس البرنامج. ينبع هذا التعليق من حقيقة أن معايير C وC تملي أن التدفقات لها اتجاه، وبمجرد تعيين هذا الاتجاه للتدفق، يجب عدم خلط العمليات غير المتوافقة مع الاتجاه.
ماذا هل هذا يعني من الناحية العملية؟
عندما يتم استدعاء cout أو wcout لأول مرة، يتم تعيين اتجاه stdout. في حالة cout، يصبح stdout دفقًا موجهًا بالبايت، وفي حالة wcout، يصبح stdout دفقًا واسع التوجه. وفقًا لمعيار C [27.4.1] ومعيار C [7.19.2]، بمجرد تعيين اتجاه الدفق، يجب ألا تستدعي وظيفة غير متوافقة مع اتجاه ذلك الدفق.
استثناءات للقاعدة
ومع ذلك، من المهم ملاحظة أنه ليس كل المترجمين يتبعون هذا المعيار بدقة. على سبيل المثال، في Visual C 10.0، لم يتم تنفيذ الدالة fwide (المستخدمة لتعيين اتجاه الدفق). لذلك، في Visual C، يُسمح بالخلط بين cout وwcout.
وبالمثل، في الإصدارات المبكرة من دول مجلس التعاون الخليجي، نظرًا لخلل تم إصلاحه، كان من الممكن استدعاء cout وwcout في نفس البرنامج عن طريق استدعاء std ::ios::sync_with_stdio(false); في بداية البرنامج.
ومع ذلك، من المهم أن نأخذ في الاعتبار أن هذه استثناءات للقاعدة. بشكل عام، لا يُنصح بالخلط بين تدفقات الإخراج الواسعة والضيقة في نفس البرنامج، لأن ذلك قد يؤدي إلى سلوك غير متوقع أو نتائج غير محددة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3