/ / Qt Include-Dateien - C ++, Qt, Include

Qt Include-Dateien - C ++, Qt, Include

Ich habe mich mit jemandem unterhalten, der mir sagt, dass es nicht gut ist, das zu tun, was Qt mit Include-Dateien macht, weil ich die gleiche Strategie in meinen Code übernommen habe.

Lassen Sie uns QApplication als Beispiel verwenden, wenn Sie QApplication einbinden möchten, dann sollten Sie Folgendes tun:

#include <QApplication>

QApplication ist eine Datei ohne Erweiterung, die Folgendes enthält:

#include "qapplication.h"

Der einzige Nachteil ist, dass es mehr Dateien im Projekt erstellt. Außerdem denke ich, dass es nur Vorteile hat.

Meine Frage ist also, warum ist das eine gute oder eine schlechte Idee?

Antworten:

2 für die Antwort № 1

Ich denke, es ist meistens der persönliche Geschmack. Verschiedene Projekte verwenden einen anderen Stil. Qt hat diesen Stil aufgegriffen.

1) Es entspricht im Grunde teilweise demStandard-Bibliothek enthält ohne die Header-Erweiterung, obwohl CamelCase. Es ist in dieser Hinsicht anders, obwohl die Standardbibliothek in diesen Tagen nicht erlaubt, die Suffix-Version zu verwenden.

2) Es könnte auch hilfreich sein, wenn Klassen innerhalb eines Headers mit einer anderen Hauptklasse enthalten sind. Siehe dieses Beispiel:

#include <QFoo>

Wobei QFoo in qbar.h definiert ist, da die Hauptklasse QBar ist, aber es gibt eine andere Klasse, die in den gleichen Header eingefügt wird.

Der einzige Nachteil ist, dass es mehr Dateien im Projekt erstellt.

Es erstellt nicht mehr Dateien als nötig, weilDiese könnten wie im Qt-Projekt im laufenden Betrieb generiert werden. In diesem Fall wird der Quellbaum nicht durcheinandergeworfen und in das Build-Verzeichnis oder zumindest an einen anderen Ort verschoben, an dem er nicht in die Quere kommt. Dies geschieht derzeit durch syncqt im Qt-Projekt.


2 für die Antwort № 2

Verwenden von Headerdateien ohne Erweiterung ist kein aeine gute Idee, da es das Durchsuchen von Header-Dateien (* .h oder * .hpp) erschwert und die Identifizierung des Inhalts einer Datei erschwert (zB wenn der Editor auf die Erweiterung angewiesen ist, um den richtigen Syntax-Highlighting-Modus zu wählen) ). Außerdem verursacht es, wie Sie erwähnt haben, mehr Dateien im Projekt.

Auch QT verwendet diese Konvention genau, weil intelligente Programmierer dies nicht tun. Das bedeutet, dass Ihre Header nicht mit neuen Qt-Headern kollidieren.

Also ich denke, die Verwendung Ihrer Header-Dateien mit Erweiterungen trennt Ihre benutzerdefinierten Header-Dateien von Qt in irgendeiner Weise. Es macht es klarer und sauber, welcher Header für Qt und welcher Ihrer ist.