2017-10-12 1 views
1

Was ist die aktuelle "Best Practice" in Bezug auf die Einbeziehung von Qt-Header-Dateien bei der Verwendung eines modernen und aktuellen C++ - Compilers (z. B. MSVC2015) mit vorkompilierten Headern aktiviert?Best Practice für Qt-Includes und vorkompilierte Header?

Beispiel:

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

gegen

#include <QtCore> 
#include <QtGui> 
  • Welche Konvention sollte ich für ein neues Projekt wählen?

  • Was sind die Vorteile/Nachteile von beiden?

  • Was ist häufiger bei neuen Projekten?

Antwort

1

Precompiled Kompilation Zeit reduzieren, und nur das, wenn Sie also

#include <QtCore/QStringList> 

umfassen Es ist schneller als

#include <QtCore> 

und die Binärdatei wird größer mit QtCore enthalten.

Wenn Sie sicher sind, dass Sie sich auf alles, was in QtCore abhängen, sind es, wenn nicht, schließen jeden Kopf separatly

+0

„... und die binären größer sein werden mit QtCore enthalten.“ Bist du dir da wirklich sicher? Ist es nicht so, dass der Compiler viel intelligenter darin ist zu sehen, was benötigt wird und was nicht als ein tatsächlicher Programmierer in Bezug auf vorkompilierte Header ist? – FlKo

+0

Es hängt von Ihren Linker-Optionen –

+0

Ich glaube nicht, dass das korrekt ist. Für die dynamische Verknüpfung macht es keinen Unterschied, da es alles extern ist. Bei der statischen Verknüpfung enthält der Compiler nur den Code, auf den der Benutzercode direkt oder indirekt verweist. Meine statische verknüpfte App ist nur 10 MB groß, auch wenn ich gerne über 50 MB statische Bibliotheken verwende. Es scheint, dass nur das, was ich tatsächlich verwende, hinzugefügt wird. – dtech