آخر

تحذير Mac: اقترح أقواسًا حول المهمة المستخدمة كقيمة حقيقة

ص

روبلساها

ملصق أصلي
22 ديسمبر 2008
  • 8 يناير 2009
أهلا
أنا أستخدم هذا المقتطف من التعليمات البرمجية

باطل * مقبض _ ؛

إذا (handle_ = dlopen ('/ System / Library / Frameworks / DiskArbitration.Framework / Versions / A / DiskArbitration' ، RTLD_NOW))
{
printf ('............') ؛

}
وإلا إذا (handle_ = dlopen ('/ System / Library / PrivateFrameworks / DiskArbitration.Framework / Versions / A / DiskArbitration' ، RTLD_NOW))
{
printf ('.................') ؛
}

لكني أتلقى التحذير:
اقترح أقواسًا حول المهمة المستخدمة كقيمة حقيقية للسطر الأول i ، e في حلقة 'for' .... هل يمكن لأي شخص مساعدتي في التخلص من هذا التحذير .. إلى

kpua

25 يوليو 2006


  • 8 يناير 2009
أولاً ، من السيئ عمومًا أن يكون لديك آثار جانبية في عبارات if ().

ومع ذلك ، في بعض الأحيان تكون أبسط طريقة لتشفير ما تعنيه (على الرغم من أنني لا أعتقد أنها في مثالك بالضرورة). عندما يكون لديك واجب في عبارة if ، يتوقع GCC عمومًا شيئًا مثل هذا:

الكود: if ( (foo = bar()) != NULL )
لاحظ الأقواس الزائدة حول المهمة. يقترح GCC استخدام الأقواس لتجنب الخطأ التالي:

الكود: if ( foo = bar() != NULL )
التي لن تتحقق من أن القيمة المعينة لـ foo تساوي NULL ، بل تقوم بتعيين قيمة منطقية (bar ()! = NULL) إلى foo.

من المعتاد أيضًا وبشكل عام أن يكون لديك التحقق المنطقي الصريح هناك ، ولهذا السبب تتوقع دول مجلس التعاون الخليجي ذلك. س

ساندر

إلى
24 أبريل 2008
  • 9 يناير 2009
هو أيضا لأن البيان

الكود: if (a = b) {...}
هو الصحيح C (عيّن b لـ a وتحقق من عدم الصفر) ، ولكن غالبًا ما يقصده الناس حقًا

الكود: if (a == b) {...}
نظرًا لأن التخصيص داخل if () هو الاستثناء ، يصدر GCC تحذيرًا بشأنه. أيضًا للقراء المستقبليين لشفرتك ، تشير الأقواس الزائدة إلى 'نعم ، أعني حقًا التعيين هنا'.