Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

06.05.2009, 10:15

Zitat von »"xardias"«

Wäre das nicht doppelt gemoppelt? Oder hat pragma once Vorteile gegenüber Include Guards?


Ja, bei include guards muss der Präprozessor (zumindest theoretisch) trozdem bei jedem #include die Datei öffnen und durchlaufen (gut der gcc z.b. erkennt afaik include guards und spart sich das). Bei #pragma once muss er das nicht, da merkt er sich nur ob die Datei schon inkludiert wurde und wenn ja überspringt er das#include einfach.
Der gcc unterstützt #pragma once afaik mittlerweile auch vernünftig sodass man es auch dort getrost verwenden kann...

12

06.05.2009, 10:27

Allerdings ist die gesparte Zeit durch #pragma once eher marginal. (Hält sich im Bereich von max. 1 Minute, fast immer aber noch unter 30 Sekunden) Und wenn man die Zeit zum Headerinkludieren aufs minimum senken möchte, dann nutzt man folgendes:

C-/C++-Quelltext

1
2
3
4
5
6
7
//header.h

#ifndef HEADER_H
#define HEADER_H

//insert random code here


#endif


C-/C++-Quelltext

1
2
3
4
5
6
//header.cpp

#ifndef HEADER_H
#include "header.h"
#endif

//insert code


wenn irgendwer lust kann kann er ja nen benchmark machen ;)

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

13

06.05.2009, 10:40

Ansonsten könnte man ja auch sowas machen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
#ifdef MSVC
   #pragma once
#else
   #ifndef HEADERNAME_H_
   #define HEADERNAME_H_

---

#ifdef MSVC
#else
   #endif


:badgrin: :badgrin: :badgrin:

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

14

06.05.2009, 10:42

Zitat von »"Genion"«

Allerdings ist die gesparte Zeit durch #pragma once eher marginal. (Hält sich im Bereich von max. 1 Minute, fast immer aber noch unter 30 Sekunden) Und wenn man die Zeit zum Headerinkludieren aufs minimum senken möchte, dann nutzt man folgendes:

C-/C++-Quelltext

1
2
3
4
5
6
7
//header.h

#ifndef HEADER_H
#define HEADER_H

//insert random code here


#endif


C-/C++-Quelltext

1
2
3
4
5
6
//header.cpp

#ifndef HEADER_H
#include HEADER_H
#endif

//insert code


wenn irgendwer lust kann kann er ja nen benchmark machen ;)


Unteres wird nicht funktionieren. Außerdem hängt die zusätzliche Zeit auch ab von der Anzahl der inkludierten Header und deren Größe.

Sry für Doppelpost ;)

15

06.05.2009, 11:12

Sry, war nen Tippfehler. Habs korrigiert ;)

Und die Includeguards nur zu setzen wenn man nicht vc nutzt ist auch unnötig. ;)

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

16

06.05.2009, 14:08

Zitat von »"K-Bal"«

Ansonsten könnte man ja auch sowas machen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
#ifdef MSVC
   #pragma once
#else
   #ifndef HEADERNAME_H_
   #define HEADERNAME_H_

---

#ifdef MSVC
#else
   #endif


:badgrin: :badgrin: :badgrin:


??? Fehlt da nicht irgendwie nen #endif ?

17

06.05.2009, 15:17

so wie der da steht müssten sogar 2 fehlen

18

06.05.2009, 15:37

Davon mal abgesehen das auch der gcc pragma once unterstützt ... und von allen die es nicht unterstützen ignoriert wird ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

19

06.05.2009, 15:48

Also so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#ifndef _FILE_H
#define _FILE_H
#pragma once



...


#endif

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

20

06.05.2009, 16:57

Zitat von »"Databyte"«

Also so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#ifndef _FILE_H
#define _FILE_H
#pragma once



...


#endif


Da ist das #pragma once jetzt zu viel, doppelt gemoppelt ;)

Ja, ihr habt Recht, mein Code war Müll. Aber falls es keinem aufgefallen ist, das war nicht wirklich ernst gemeint ;)

Werbeanzeige