2017-10-12 19 views
1

Quelle est la «meilleure pratique» actuelle concernant l'inclusion de fichiers d'en-tête Qt lors de l'utilisation d'un compilateur C++ moderne et récent (par exemple MSVC2015) avec des en-têtes précompilés activés?Meilleure pratique pour les en-têtes Qt inclus et précompilés?

Exemple:

#include <QStringList> 
#include <QTreeWidget> 
#include <QListWidget> 

contre

#include <QtCore> 
#include <QtGui> 
  • Quelle convention dois-je choisir pour un nouveau projet?

  • Quels sont les avantages/les inconvénients de ces deux solutions?

  • Quoi de plus commun pour les nouveaux projets?

Répondre

1

précompilés réduire le temps de compilation, et seulement cela, donc si vous incluez

#include <QtCore/QStringList> 

Il est plus rapide que

#include <QtCore> 

et votre binaire sera plus grande avec QtCore inclus.

Si vous êtes sûr que vous dépendez tout QtCore, inclure, sinon, inclure chaque en-tête séparemment

+0

« ... et votre binaire sera plus grande avec QtCore inclus. » Êtes-vous vraiment sûr de cela? N'est-il pas que le compilateur est beaucoup plus intelligent de voir ce qui est nécessaire et ce qui n'est pas un programmeur réel concernant les en-têtes précompilés? – FlKo

+0

Cela dépend de vos options d'éditeur de liens –

+0

Je ne pense pas que ce soit correct. Pour la liaison dynamique, cela ne fait aucune différence, car tout est externe. Pour la liaison statique, le compilateur inclut uniquement le code référencé par le code utilisateur, directement ou indirectement. Mon application liée statique est seulement 10 mb, même si j'aime et inclue plus de 50 mb de bibliothèques statiques. Il semble que seul ce que j'utilise réellement soit ajouté. – dtech