Frage

Ich sehe so viel Code einschließlich stdafx.h. Sprich, ich nicht wollen vorkompilierte Header. Und I sind alle erforderlichen System-Header selbst manuell. In diesem Fall ist es ein anderer guter Grund, warum mir bewusst sein sollte, wo ich erfordern stdafx.h?

War es hilfreich?

Lösung

Wenn Sie nicht wollen, vorkompilierte Header verwenden, dann gibt es keinen Grund zur Verwendung einer Standard-Datei enthalten - dies wird die Build für jede Datei verlangsamen, die es enthält, und führen sie Extramaterial enthalten, dass sie nicht brauchen, . Es loszuwerden und beinhalten nur die Header sie benötigen.

Andere Tipps

Auch ohne vorkompilierte Header StdAfx.h nützlich sein könnte, da sie Gruppen-Header enthält und Definitionen gemeinsam für alle Dateien.

Sie können natürlich wählen, ob all diese Definitionen in jeder Datei zu wiederholen. stdafx.h ist nicht unbedingt notwendig.

stdafx.h ist nur eine weitere Header-Datei. Wenn Sie Sie fallen nicht brauchen sie fühlen sich frei, es nicht enthalten und es aus dem Projekt zu entfernen.

Allerdings ist es ganz typisch eine Datei wie stdafx.h genau zu haben, für vorkompilierte Header zu arbeiten und nicht das Zeug alle in jeder Quelldatei manuell zu schließen.

Sie können mit vorkompilierte Header (was eine gute Sache sind) ohne Verwendung von stdafx.h (ich es auch verabscheuen). Ich habe nur den Zugriff auf VC ++ 6.0 aber, dass Sie unter Projekteinstellungen | C / C ++ |. Vorkompilierte Header und „automatische Verwendung von vorkompilierte Header“ wählen, sondern die „kompilierte durch“ Feld leer lassen

Wie andere erwähnt haben: Wenn Sie nicht vorkompilierte Header brauchen, die Sie nicht wirklich brauchen stdafx.h. Und es nur zu einer Gruppe mit gemeinsamer beinhaltet ist ziemlich schlechte Praxis, eigentlich.

In der Tat, auch wenn vorkompilierte Header verwendet wird, ist es empfehlenswert, die Header Ihr Prozess nach stdafx.h tatsächlich enthalten muss (oder precompiled.h oder was auch immer Sie es nennen wollen) - zusammen mit #ifdef Magie in Ihrem vorkompilierte Header auszuschalten die Verwendung von PCH.

Warum? Um Ihre Modulabhängigkeiten zu überprüfen. Die Möglichkeit, Ihre PCH deaktivieren können Sie fangen, ob Sie durch Parsen CPP und H-Dateien (mit Ausnahme der PCH-Header, natürlich) notwendigen Module oder nicht, und Sie können dann auf ein Werkzeug schreiben lesen Modul Interdependenzen sind inklusive.

Ich weiß, das ist ein alter Thread, aber ich dachte, dass ich meine Meinung an den Leser weitergeben würde. Ich fand dies im Jahr 2017, also bin ich sicher, ich bin nicht der einzige, der hier sein wird.

Es ist ein Vorteil der Verwendung von vorkompilierte Header, die von anderen übersehen werden, weil sie ihre Praxis seit vielen Jahren verwendet hat. Die C ++ Standard hat sich stark weiterentwickelt. Statt einschließlich Vektor in 20 Dateien, die Sie benötigen und und oder was auch immer, verwenden Sie eine PCH-Datei und der Compiler muss weniger Arbeit tun, und das macht glückliche Gesichter für jedermann. Auch können Sie Ihre gemeinsame Makros in dort setzen, wie Verifizieren und ASSERT und intelligente Klassenobjekte. setzen Sie Ihre Klasse-Header nicht dort, wäre es nicht sinnvoll, dass machen, sondern die Standard-Bibliothek oder etwas, das Sie benötigen, wird weltweit in vielen Orten wie die Makros ich erwähnt zu verwenden.

im Grunde dies realisieren, indem die Header auch Sie in jeder Datei benötigen Sie benötigen, wie Iostream, String- und Vektor Sie die Sourcen effektiv, dass jedes einzelne Mal, als Inline in die Datei. Fügen Sie ein „Pre Compiled“ Header, auch nur der Name dort eine Glocke läuten soll.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top