دیگر

میک وارننگ: اسائنمنٹ کے ارد گرد قوسین تجویز کریں جو سچائی کی قدر کے طور پر استعمال ہوتے ہیں۔

آر

rublesaha

اصل پوسٹر
22 دسمبر 2008
  • 8 جنوری 2009
ہائے
میں کوڈ کا یہ ٹکڑا استعمال کر رہا ہوں۔

void * ہینڈل_؛

if (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('.................')؛
}

لیکن مجھے انتباہ مل رہا ہے:
پہلی سطر کے لیے 'اسائنمنٹ کے ارد گرد قوسین تجویز کریں جو سچائی قدر کے طور پر استعمال کیا جاتا ہے'، یعنی 'for' لوپ کے لیے.... کیا کوئی اس انتباہ سے چھٹکارا پانے میں میری مدد کر سکتا ہے؟ TO

kpua

25 جولائی 2006


  • 8 جنوری 2009
سب سے پہلے، if() بیانات میں ضمنی اثرات ہونا عام طور پر بری شکل ہے۔

تاہم، بعض اوقات یہ آپ کا مطلب کوڈ کرنے کا آسان ترین طریقہ ہوتا ہے (حالانکہ مجھے نہیں لگتا کہ یہ آپ کی مثال میں ضروری ہے)۔ جب آپ کے پاس if اسٹیٹمنٹ میں کوئی اسائنمنٹ ہوتا ہے، تو GCC عام طور پر کچھ اس طرح کی توقع کرتا ہے:

کوڈ: |_+_|
اسائنمنٹ کے ارد گرد اضافی قوسین کو دیکھیں۔ GCC تجویز کرتا ہے کہ آپ درج ذیل غلطی سے بچنے کے لیے قوسین کا استعمال کریں۔

کوڈ: |_+_|
جو foo کے NULL کے برابر ہونے کی تفویض کردہ قدر کی جانچ نہیں کرے گا، بلکہ boolean (bar() != NULL) foo کو تفویض کرے گا۔

وہاں واضح بولین چیک کرنا بھی رواج اور عام طور پر زیادہ واضح ہے، اس لیے جی سی سی کو اس کی توقع ہے۔ ایس

سینڈر

کو
24 اپریل 2008
  • 9 جنوری 2009
یہ اس لیے بھی ہے کہ بیان

کوڈ: |_+_|
صحیح C ہے (a کو b تفویض کریں اور غیر صفر کے لیے چیک کریں)، لیکن اکثر لوگ واقعی مراد لیتے ہیں۔

کوڈ: |_+_|
چونکہ if() کے اندر اسائنمنٹ مستثنیٰ ہے، اس لیے GCC اس کے بارے میں ایک انتباہ جاری کرتا ہے۔ نیز آپ کے کوڈ کے مستقبل کے قارئین کے لیے، اضافی قوسین 'ہاں، میرا مطلب یہاں اسائنمنٹ ہے' کی نشاندہی کرتے ہیں۔