Je viens de découvrir l'existence de qt_noop()
DEFINE dans le qglobal.h comme:Quel est le but de `qt_noop`
inline void qt_noop() {}
Quel est le point de celui-ci?
Je viens de découvrir l'existence de qt_noop()
DEFINE dans le qglobal.h comme:Quel est le but de `qt_noop`
inline void qt_noop() {}
Quel est le point de celui-ci?
Je sais qu'il est utilisé en interne dans certaines macros qui devraient faire quelque chose que pour debug, par exemple:
# 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
Donc son seul but est d'utiliser l'opérateur ternaire (pourquoi pas un seul si?) Puisqu'il pourrait être omis dans la 2ème définition? – gregseth
Il ne peut pas être omis dans 2nd define. La macro Q_ASSERT est généralement utilisée comme appel de fonction normale, c'est-à-dire 'Q_ASSERT (xxx == yyy);'. La macro doit donc être développée en code pouvant être suivi avec un point-virgule sans erreurs/avertissements. Comme pour le "single if", il y a quelques problèmes avec les macros contenant si elles sont utilisées dans d'autres instructions if sans accolades (voir http://www.parashift.com/c++-faq-lite/misc-technical-issues). html # faq-39.4), donc l'opérateur ternaire pourrait être une meilleure idée ici. – chalup
Accepté plus pour le commentaire et le lien que la réponse ... de toute façon, merci! :) – gregseth
+1 Pour la question ... – mosg
* noop * - * pas * op - Pas d'opération. –
Précisément! Pourquoi se fout de créer une fonction qui ne ... rien! – gregseth