<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[#pragma hdrstop in Header-Dateien]]></title><description><![CDATA[<p>Hallo,</p>
<p>da in meinem Projekt die Compilezeit langsam unerträglich zugenommen hat, möchte ich Precompiled-Headers optimal nutzen:</p>
<p>Die Direktive <strong>#pragma hdrstop</strong> bewirkt, dass die davor stehenden Includes als vorcompilierter Header verwendet werden dürfen.<br />
Borland selbst verwendet diese nur bei vorgegebenen Bibliotheken wie z.B. vcl.h .</p>
<p>Ausserdem werden diese immer nur in cpp-Dateien und nicht in Header-Dateien verwendet.</p>
<p>Kann man dieses Pragma in .h-Dateien verwenden, da ich die meisten Includes in den .h-Dateien mache?<br />
Gibt es sonst noch was zu beachten?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/127843/pragma-hdrstop-in-header-dateien</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 02:14:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/127843.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Nov 2005 06:29:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to #pragma hdrstop in Header-Dateien on Mon, 28 Nov 2005 06:29:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>da in meinem Projekt die Compilezeit langsam unerträglich zugenommen hat, möchte ich Precompiled-Headers optimal nutzen:</p>
<p>Die Direktive <strong>#pragma hdrstop</strong> bewirkt, dass die davor stehenden Includes als vorcompilierter Header verwendet werden dürfen.<br />
Borland selbst verwendet diese nur bei vorgegebenen Bibliotheken wie z.B. vcl.h .</p>
<p>Ausserdem werden diese immer nur in cpp-Dateien und nicht in Header-Dateien verwendet.</p>
<p>Kann man dieses Pragma in .h-Dateien verwenden, da ich die meisten Includes in den .h-Dateien mache?<br />
Gibt es sonst noch was zu beachten?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928734</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Mon, 28 Nov 2005 06:29:00 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma hdrstop in Header-Dateien on Mon, 28 Nov 2005 10:02:54 GMT]]></title><description><![CDATA[<p>Borland C++Builder-Hilfe schrieb:</p>
<blockquote>
<p>Präprozessor-Direktiven werden gewöhnlich am Anfang des Quellprogramms plaziert, sind aber an jeder beliebigen Stelle des Programms zulässig. Der Präprozessor von Borland C++ erkennt Präprozessor-Direktiven (auch Steuerzeilen genannt) und zerlegt sie in die darin enthaltenen Symbole.</p>
</blockquote>
<p>demzufolge kann man pragma auch im header verwenden.</p>
<p>inkludieren musst du im header nur, wenn der header das erfordert, ansonsten gehören die inkludes in die cpp.</p>
<p>beispiel:</p>
<p>hier muss <strong>#include &lt;IniFiles.hpp&gt;</strong> nicht im header stehen, da es dort nicht für die definition von TIniFile benötigt wird.</p>
<pre><code class="language-cpp">// im Header
void BlahFasel(AnsiString FileName);

// im cpp
#include &lt;IniFiles.hpp&gt;

void BlahFasel(AnsiString FileName)
{
  TIniFile *Ini = new TIniFile(FileName); 

  // ...

  delete Ini;
}
</code></pre>
<p>das <strong>#pragma hdrstop</strong> hab ich bisher auch nur in den cpp benötigt. das macht allerdings nur sinn, wenn du in all deinen projektdateien die gleichen header inkludierst.</p>
<p>folgendes bringt dir überhaupt nichts, da die vorkompilierten header nicht mehr übereinstimmen, d.h. in unit1 sind 3 vorkompilierte header und in unit2 nur 2.</p>
<pre><code class="language-cpp">// Unit1.cpp
#include &lt;vcl.h&gt;
#include &quot;meine_unit1.h&quot;
#include &quot;meine_unit2.h&quot;
#pragma hdrstop

// Unit2.cpp
#include &lt;vcl.h&gt;
#include &quot;meine_unit1.h&quot;
#pragma hdrstop
</code></pre>
<p>um das compilieren zu beschleunigen, kannst du dir auch einen globalen header erstellen, der alle deine projektdateien (units) inkludiert. diesen einen header inkludierst du dann in jedem formular. dann sind alle header gleich und beimn compilieren, wird nur einmal der globale header erstellt und als vorkompilierter header verwendet. nachteil: du hast dann natürlich in jeder unit alle header drin, was unschön werden kann, wenn du einzelne units in anderen projekten verwenden willst und dort nur einen teil der funktionen benötigst.</p>
<pre><code class="language-cpp">#ifndef __MY_GLOBAL_HEADER_H
#define __MY_GLOBAL_HEADER_H

//---------------------------------------------------------------------
#include &lt;vcl.h&gt;
#include &lt;clipbrd.hpp&gt;
#include &lt;filectrl.hpp&gt;
//---------------------------------------------------------------------
#include &quot;meine_unit1.h&quot;
#include &quot;meine_unit2.h&quot;
//---------------------------------------------------------------------

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/928846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928846</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Mon, 28 Nov 2005 10:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma hdrstop in Header-Dateien on Mon, 28 Nov 2005 10:16:42 GMT]]></title><description><![CDATA[<p>Zunächst mal vielen Dank für die ausführliche Antwort.</p>
<p>In meinem Fall sind mir speziell die STL-Header ein Klotz am Bein.</p>
<p>Auch verwende ich viele Klassen und diese kommunizieren miteinander, daher muss ich z.B. bei typisierten Parametern diese bereits in der H-Datei inkludieren.</p>
<p>Da ich die STL sehr viel einsetze und auch selbst mit Templates arbeite, kommt mir gerade der Gedanke, dass diese gar nicht vorcompiliert werden können, weil erst beim Aufruf für den Compiler klar ist, was zu tun ist.</p>
<p>Kann das sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928855</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Mon, 28 Nov 2005 10:16:42 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma hdrstop in Header-Dateien on Mon, 28 Nov 2005 12:40:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ja, das ist der Fall. Das liegt aber weniger daran, das es die STL ist, sondern daran das die STL (wie der Name ja schon sagt) aus Templates besteht. Und diese werden immer zur Compilezeit ausgewertet und mit den angegeben Typen spezialisiert, wenn sie angewendet werden. Aus diesem Grund müßen bei Templates auch die komplette Implementation für das Compilen vorhanden sein, nicht nur die Definition.<br />
Dieser Effekt besteht aber auch bei selbstgeschriebenen Templates.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928931</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 28 Nov 2005 12:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma hdrstop in Header-Dateien on Mon, 28 Nov 2005 12:45:12 GMT]]></title><description><![CDATA[<p>Ich würde überhaupt ein einziges .h-File machen, in dem du dann alle anderen inkludierst, die du vorcompiliert haben willst. Dieses musst du dann in jedem .cpp-File als erstes inkludieren. So macht es auch Visual C++ (die nennen es immer StdAfx.h).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928934</guid><dc:creator><![CDATA[Ringding]]></dc:creator><pubDate>Mon, 28 Nov 2005 12:45:12 GMT</pubDate></item></channel></rss>