अन्य

मैक चेतावनी: सत्य मान के रूप में उपयोग किए जाने वाले असाइनमेंट के आसपास कोष्ठकों का सुझाव दें

आर

रूबलसाह

मूल पोस्टर
22 दिसंबर, 2008
  • जनवरी 8, 2009
नमस्ते
मैं कोड के इस स्निपेट का उपयोग कर रहा हूं

शून्य * हैंडल_;

अगर (हैंडल_ = dlopen ('/ सिस्टम/लाइब्रेरी/फ्रेमवर्क/डिस्क आर्बिट्रेशन। फ्रेमवर्क/संस्करण/ए/डिस्क आर्बिट्रेशन', RTLD_NOW))
{
प्रिंटफ ('............');

}
और अगर (हैंडल_ = dlopen ('/ सिस्टम/लाइब्रेरी/प्राइवेटफ्रेमवर्क/डिस्क आर्बिट्रेशन। फ्रेमवर्क/संस्करण/ए/डिस्क आर्बिट्रेशन', RTLD_NOW))
{
प्रिंटफ ('.................');
}

लेकिन मुझे चेतावनी मिल रही है:
पहली पंक्ति के लिए 'सत्य मूल्य के रूप में उपयोग किए गए असाइनमेंट के आसपास कोष्ठक सुझाएं', 'फॉर' लूप के लिए .... क्या कोई मुझे इस चेतावनी से छुटकारा पाने में मदद कर सकता है .. प्रति

केपुआ

जुलाई 25, 2006


  • जनवरी 8, 2009
सबसे पहले, if() कथनों में साइड-इफेक्ट्स होना आम तौर पर खराब रूप है।

हालांकि, कभी-कभी यह आपके मतलब को कोड करने का सबसे आसान तरीका है (हालांकि मुझे नहीं लगता कि यह आपके उदाहरण में जरूरी है)। जब आपके पास if स्टेटमेंट में असाइनमेंट होता है, तो GCC आमतौर पर कुछ इस तरह की अपेक्षा करता है:

कोड: |_+_|
असाइनमेंट के आसपास अतिरिक्त कोष्ठकों पर ध्यान दें। GCC का सुझाव है कि आप निम्न त्रुटि से बचने के लिए कोष्ठक का उपयोग करें:

कोड: |_+_|
जो फू को दिए गए मान के लिए NULL के बराबर होने की जाँच नहीं करेगा, बल्कि foo को बूलियन (बार()! = NULL) असाइन करेगा।

यह भी प्रथागत है और आम तौर पर वहां स्पष्ट बूलियन जांच करने के लिए अधिक स्पष्ट है, इसलिए जीसीसी इसकी अपेक्षा करता है। एस

सैंडर

प्रति
24 अप्रैल 2008
  • जनवरी 9, 2009
ऐसा इसलिए भी है क्योंकि कथन

कोड: |_+_|
सही सी है (ए को बी असाइन करें और गैर-शून्य की जांच करें), लेकिन अक्सर लोगों का वास्तव में मतलब होता है

कोड: |_+_|
चूंकि अगर () के अंदर असाइनमेंट अपवाद है, जीसीसी इसके बारे में एक चेतावनी जारी करता है। आपके कोड के भावी पाठकों के लिए भी, अतिरिक्त कोष्ठक 'हां, मेरा वास्तव में मतलब यहां असाइनमेंट' से है।