<?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[boost::date_time und statische Initialisierung]]></title><description><![CDATA[<p>Huhu,</p>
<p>Ich brauche die Startzeit meines Programms und wollte diese in einer globalen Variable in einem anonymen namespace speichern. Mein Programm stürzt dann mit einem Segfault ab. Wie kann ich das Problem lösen?</p>
<p>Code:</p>
<pre><code class="language-cpp">namespace
			{
				 std::string const stime(current_time());
			}

			std::string const&amp; startup_time()
			{
				return stime;
			}

			std::string current_time()
			{
				auto const local_time = boost::posix_time::microsec_clock::local_time();
				return boost::posix_time::to_simple_string(local_time);
			}
</code></pre>
<p>Grüße,<br />
PI</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/294513/boost-date_time-und-statische-initialisierung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 20:48:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/294513.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Oct 2011 13:33:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Wed, 26 Oct 2011 13:37:24 GMT]]></title><description><![CDATA[<p>Huhu,</p>
<p>Ich brauche die Startzeit meines Programms und wollte diese in einer globalen Variable in einem anonymen namespace speichern. Mein Programm stürzt dann mit einem Segfault ab. Wie kann ich das Problem lösen?</p>
<p>Code:</p>
<pre><code class="language-cpp">namespace
			{
				 std::string const stime(current_time());
			}

			std::string const&amp; startup_time()
			{
				return stime;
			}

			std::string current_time()
			{
				auto const local_time = boost::posix_time::microsec_clock::local_time();
				return boost::posix_time::to_simple_string(local_time);
			}
</code></pre>
<p>Grüße,<br />
PI</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136122</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 26 Oct 2011 13:37:24 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Wed, 26 Oct 2011 15:58:52 GMT]]></title><description><![CDATA[<p>Ich kann das Problem nicht reproduzieren.<br />
Beim kompillieren ist mir nur aufgefallen, dass <a href="http://man.cx/stime" rel="nofollow">man: stime</a> ein doofer Name ist.</p>
<p>BTW: Du weisst schon, was ein Debugger ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136219</guid><dc:creator><![CDATA[noprob]]></dc:creator><pubDate>Wed, 26 Oct 2011 15:58:52 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Wed, 26 Oct 2011 16:02:43 GMT]]></title><description><![CDATA[<p>Natürlich weiß ich, was ein Debugger ist, sonst wüsste ich nicht, dass das Problem da liegt. &lt;.&lt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136221</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 26 Oct 2011 16:02:43 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Wed, 26 Oct 2011 16:07:29 GMT]]></title><description><![CDATA[<p>Probleme mit globalen Konstante treten immer dann auf, sobald du (oder deine Bibliothek) auf eine andere, noch nicht initialisierte Variable zugreifen. Welche das wann und wo ist, tja, dass sagt dir dein Debugger. Vorausgesetzt, er taugt etwas.</p>
<p>Besser wäre es, wenn der Aufruf nach dem Eintritt in main stattfindet. Also mit einem Singleton und einer take_start-Methode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136227</guid><dc:creator><![CDATA[noprob]]></dc:creator><pubDate>Wed, 26 Oct 2011 16:07:29 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:03:12 GMT]]></title><description><![CDATA[<p>Benutzt Du den Wert evtl. in globalen Variablen in anderen Übersetzungseinheiten? Vielleicht wäre es besser, wenn Du das &quot;Initialize on first use&quot;-Idiom benutzt, anstatt einer globalen Variable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136587</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:13:22 GMT]]></title><description><![CDATA[<p>Eine Programmstartzeit bei der ersten Verwendung zu initialisieren, macht irgendwie wenig Sinn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>@noprob: Dazu bräuchte ich kein Singleton. Dennoch wollte ich es vermeiden, einen Aufruf in main schreiben zu müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136593</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:13:22 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:19:23 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4465">@Tachyon</a>: Vielen vielen Dank, genau das war das Problem! Ich habe die Variable in einer anderen Übersetzungseinheit verwendet. Nun brauche ich noch eine Lösung dafür...</p>
<p>Ich verwende einen globalen std::ofstream, in den Logs geschrieben werden. Der Dateiname soll die Startzeit des Programms beinhalten. Vorschläge?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136602</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:19:23 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:23:09 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Vorschläge?</p>
</blockquote>
<p>Du mußt es noch ein wenig komplizierter machen. Dann geht's auf einmal. Bestimmt. Versprochen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136604</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:23:09 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:24:54 GMT]]></title><description><![CDATA[<p>Könntest du bitte konkreter werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136605</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:24:54 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:25:10 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Eine Programmstartzeit bei der ersten Verwendung zu initialisieren, macht irgendwie wenig Sinn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Kommt drauf an. Wenn die erste Verwendung erst sehr spät geschieht, ist das natürlich sinnlos, aber offenbar hattest du ja eher das Problem, dass die erste Verwendung schon <em>vor</em> der Initialisierung geschieht udn damit vor dem, was du als &quot;Programmstartzeit&quot; festgelegt hast.</p>
<p>Vielleicht wäre eine Kombination aus beidem sinnvoll: initlaize on first use, und diesen &quot;first use&quot; mit der Initialisierung einer statischen/globalen variablen &quot;sehr früh&quot; im Programm sicherzustaellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136606</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:29:24 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Eine Programmstartzeit bei der ersten Verwendung zu initialisieren, macht irgendwie wenig Sinn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ähm. Er wünschte doch nur, daß bei der ersten Verwendung initialisiert wird. Damit jemand, der zufällig vor Dir kommt, eben schnell vor Die initialisiert. Und Du kannst dann auch vor der main() global mal schnell verwenden, und schon haste die Startzeit. Und wenn Dir ein anderes globales Objekt zuvorkommt, ist die Startzeit halt früher. Ganz im Sinne des Erfinders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136610</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:29:24 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:39:02 GMT]]></title><description><![CDATA[<p>Damit fange ich immer noch wenig an. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136614</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:39:02 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:48:02 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Benutzt Du den Wert evtl. in globalen Variablen in anderen Übersetzungseinheiten?</p>
</blockquote>
<p>Wieso tritt denn das Problem auf, wenn man die globale Variable in einer anderen Übersetzungseinheit verwendet?</p>
<p>Würde es dann nicht funktionieren, wenn man in der gleichen Übersetzungseinheit einfach eine getter macht und darüber zugreift?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136619</guid><dc:creator><![CDATA[Nachgefragt...]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:48:02 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:52:21 GMT]]></title><description><![CDATA[<p>Versuchs mal so:</p>
<pre><code class="language-cpp">std::string const&amp; startup_time()
{
    static std::string const stime(current_time()); 
    return stime;
}

//...

int main()
{
    //gleich beim Eintritt einmal...
    startup_time();
}
</code></pre>
<p>Ich weiß, dass das nicht sehr schön ist, aber es ist vermutlich die sicherste Variante für das, was DU haben willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136626</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:52:21 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:54:31 GMT]]></title><description><![CDATA[<p>Nachgefragt... schrieb:</p>
<blockquote>
<p>[...]Wieso tritt denn das Problem auf, wenn man die globale Variable in einer anderen Übersetzungseinheit verwendet[...]</p>
</blockquote>
<p>Lies mal <a href="http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.14" rel="nofollow">das hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136628</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:54:31 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 12:54:58 GMT]]></title><description><![CDATA[<p>Nachgefragt... schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Benutzt Du den Wert evtl. in globalen Variablen in anderen Übersetzungseinheiten?</p>
</blockquote>
<p>Wieso tritt denn das Problem auf, wenn man die globale Variable in einer anderen Übersetzungseinheit verwendet?</p>
</blockquote>
<p>Tritt nur auf, wenn man in der anderen ÜE ebenfalls durch diesen Trick Code vor der main() ausführt.<br />
Dann ist eben nach Standard nicht definiert, welcher Code zuerst ausgeführt wird.<br />
Zum Beispiel, wenn der Konstruktor des globalen LogFiles diesen globalen String mit der Startzeit lesen will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136630</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 27 Oct 2011 12:54:58 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 13:16:12 GMT]]></title><description><![CDATA[<p>Danke, habs nun hinbekommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136648</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 27 Oct 2011 13:16:12 GMT</pubDate></item><item><title><![CDATA[Reply to boost::date_time und statische Initialisierung on Thu, 27 Oct 2011 13:21:24 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Nachgefragt... schrieb:</p>
<blockquote>
<p>[...]Wieso tritt denn das Problem auf, wenn man die globale Variable in einer anderen Übersetzungseinheit verwendet[...]</p>
</blockquote>
<p>Lies mal <a href="http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.14" rel="nofollow">das hier</a>.</p>
</blockquote>
<p>Aah... Wer lesen kann ist klar im Vorteil</p>
<p>volkard schrieb:</p>
<blockquote>
<p>Nachgefragt... schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Benutzt Du den Wert evtl. in globalen Variablen in anderen Übersetzungseinheiten?</p>
</blockquote>
<p>Wieso tritt denn das Problem auf, wenn man die globale Variable in einer anderen Übersetzungseinheit verwendet?</p>
</blockquote>
<p>Tritt nur auf, wenn man in der anderen ÜE ebenfalls durch diesen Trick Code vor der main() ausführt.<br />
Dann ist eben nach Standard nicht definiert, welcher Code zuerst ausgeführt wird.<br />
Zum Beispiel, wenn der Konstruktor des globalen LogFiles diesen globalen String mit der Startzeit lesen will.</p>
</blockquote>
<p>Danke euch beiden...<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136653</guid><dc:creator><![CDATA[Nachgefragt...]]></dc:creator><pubDate>Thu, 27 Oct 2011 13:21:24 GMT</pubDate></item></channel></rss>