سؤال

لاحظت أنه كان هناك في مرحلة ما <? و >? مشغل في مجلس التعاون الخليجي. كيف يمكنني استخدام هذه تحت GCC 4.5؟ هل تمت إزالتها ، وإذا كان الأمر كذلك ، متى؟

Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token
هل كانت مفيدة؟

المحلول

أدلة حديثة قل:

الحد الأدنى والحد الأدنى للمشغلين G ++ ('<?' و '>?') وأشكالها المركبة ('<?=') و '>?=') تم إهمالها وتم إزالتها الآن من G ++. يجب تعديل الكود باستخدام هؤلاء المشغلين للاستخدام std::min و std::max في حين أن.

يبدو أن البحث السريع عن المستندات السابقة يشير إلى أنه تمت إزالته حول الإصدار 4.0 (3.4.6 يشملها ، 4.0.4 لا).

نصائح أخرى

التكرارات في وقت سابق من g++ (ليس استخدم برنامج التحويل البرمجي C) هؤلاء المشغلين لمنحك الحد الأدنى أو الحد الأقصى للقيم ولكن تم إهمالهم منذ فترة طويلة لصالح std::min و std::max.

في الأساس ، كانت تساوي (ولكن بدون إمكانية تقييم مزدوج ل a أو b):

a <? b       -->       (a < b) ? a : b
a >? b       -->       (a > b) ? a : b

من حيث استبدالها (وأنت حقًا ينبغي استبدالها) ، يمكنك استخدام شيء مثل:

Offset block_count = cpfs->geo.block_size - block_offset;
if (block_count > count) block_count = count;

أو ما يعادلها باستخدام std::min.

أنا لست معجبًا كبيرًا باستخدام "ملحقات" C/C ++ (خاصة تلك التي تم إهمالها و/أو إزالتها) لأنها تربطني بتنفيذ محدد للغة.

يجب ألا تستخدم أبدًا امتدادًا غير قياسي حيث تتوفر طريقة قياسية كافية تمامًا.

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