2010-05-19 4 views
6

मैं सिर्फ पाया qt_noop() के अस्तित्व के रूप में qglobal.h में परिभाषित उद्देश्य:क्या है की `qt_noop` ​​

inline void qt_noop() {} 

इसका महत्व समझ में क्या है?

+0

+1 प्रश्न के लिए ... – mosg

+0

* NOOP * - * कोई सेशन * - कोई ऑपरेशन नहीं। –

+0

निश्चित रूप से! एक समारोह क्यों बनाते हैं जो कुछ करता है ... कुछ भी नहीं! – gregseth

उत्तर

8

मैं जानता हूँ कि यह कुछ मैक्रो है कि कुछ डिबग बनाता है केवल के लिए, उदाहरण के लिए क्या करना चाहिए में आंतरिक रूप से किया जाता है:

# ifndef QT_NO_DEBUG 
# define Q_ASSERT(cond) ((!(cond)) ? qt_assert(#cond,__FILE__,__LINE__) : qt_noop()) 
# else 
# define Q_ASSERT(cond) qt_noop() 
# endif 
#endif 
+0

तो इसका एकमात्र उद्देश्य टर्नरी ऑपरेटर का उपयोग करना है (क्यों एक एकल नहीं?) क्योंकि इसे दूसरी परिभाषा में छोड़ा जा सकता है? – gregseth

+3

इसे दूसरी परिभाषा में छोड़ा नहीं जा सकता है। Q_ASSERT मैक्रो आमतौर पर सामान्य फ़ंक्शन कॉल की तरह उपयोग किया जाता है, यानी 'Q_ASSERT (xxx == yyy); '। इसलिए मैक्रो को उस कोड में विस्तार करना चाहिए जिसे बिना किसी त्रुटि/चेतावनियों के अर्धविराम के साथ किया जा सकता है। "सिंगल इफ" के लिए, मैक्रोज़ के साथ कुछ समस्याएं हैं, यदि ब्रेसिज़ के बिना बयान देते हैं तो उन्हें अन्य के अंदर उपयोग किया जाता है (देखें http://www.parashift.com/c++-faq-lite/misc-technical-issues। एचटीएमएल # faq-39.4), तो यहां टर्नरी ऑपरेटर एक बेहतर विचार हो सकता है। – chalup

+0

टिप्पणी के लिए टिप्पणी और लिंक के लिए और अधिक स्वीकृत ... वैसे भी, धन्यवाद! :) – gregseth

संबंधित मुद्दे