Ich habe gerade die Existenz von qt_noop()
definieren im qglobal.h als:Was ist der Zweck der `qt_noop`
inline void qt_noop() {}
Was ist der Sinn davon?
Ich habe gerade die Existenz von qt_noop()
definieren im qglobal.h als:Was ist der Zweck der `qt_noop`
inline void qt_noop() {}
Was ist der Sinn davon?
Ich weiß, dass es intern in einigen Makros verwendet wird, die nur etwas tun sollten, für Debug, zum Beispiel baut:
# 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
Sein einziger Zweck ist es, den ternären Operator zu verwenden (warum nicht ein einziges wenn?), Da es in der zweiten Definition weggelassen werden könnte? – gregseth
Es kann nicht in der 2. Definition weggelassen werden. Das Makro Q_ASSERT wird normalerweise wie ein normaler Funktionsaufruf verwendet, d.h. 'Q_ASSERT (xxx == yyy);'. Daher muss das Makro zu Code erweitert werden, der mit Semikolon ohne Fehler/Warnungen verfolgt werden kann. Was das "single if" betrifft, gibt es einige Probleme mit Makros, die enthalten, wenn sie in anderen if-Anweisungen ohne Klammern verwendet werden (siehe http://www.parashift.com/c++faq-lite/misc-technical-issues). html # faq-39.4), so könnte hier ein ternärer Operator eine bessere Idee sein. – chalup
Akzeptiert mehr für den Kommentar und den Link als die Antwort ... trotzdem, danke! :) – gregseth
+1 Für die Frage ... – mosg
* noop * - * keine op * - Keine Operation. –
Genau! Warum sollte ich eine Funktion erstellen, die ... nichts macht? – gregseth