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

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

1

04.12.2009, 21:52

pragma once

Hallo,

Ich wollte fragen, was besser ist:

C-/C++-Quelltext

1
2
3
4
#ifndef CGAME_HPP
#define CGAME_HPP
...
#endif


oder

C-/C++-Quelltext

1
#pragma once


Ich weiß, es gab schon mal einen Thread, aber der letzte Post ist über 1 1/2 Jahre alt :lol:

Da hieß es, es ist zwar schneller, aber schlechter unterstützt...

Ist das immer noch so? Ich sehe nämlich sehr viele hier, die #pragma once nutzen...

Danke schon mal im voraus!

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

2

04.12.2009, 21:57

ich benutz das obere. So stand des bis jetzt in jedem Buch das ich darüber gelesen hab
Metal ist keine Musik sondern eine Religion.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

04.12.2009, 22:06

Von den grossen Compiler wird pragma ebenfalls unterstützt. Um auf Nummer sicher zu gehen, kann man auch einfach beides benutzen, weil pragma's, wenn sie nicht bekannt sind einfach ignoriert werden vom Compiler.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

4

04.12.2009, 23:37

Ich benutze eigentlich nur noch pragma once. Sowohl aktuelle GCC Versionen als auch Visual Studio unterstützen das und mehr Compiler muss ich nicht ansprechen.

5

05.12.2009, 00:48

Ich benutze beides.
Wie schon erwähnt wurde wir einfach das nich unterstützte ausgelassen.
Aber man sollte sich, wenn man für bestimmte Platforms progrmamiert nicht drauf verlassen. ;)

6

05.12.2009, 11:15

In aktuellen Projekten, die ich nur auf MSVC++ benutze, verwende ich #pragma once. Bei Bibliotheken, bei denen ich vorhabe, sie eines Tages anderen Leuten zur Verfügung zu stellen, achte ich mehr auf Plattformunabhängigkeit und setze konventionelle Include-Guards ein.

7

06.12.2009, 15:59

Imho ist die define Variante zu bevorzugen, da diese auch verworrene Include-strukturen (rekursion oder ähnliches) sauber erkennt und behebt.

Hatte letztes Jahr ein größeres Projekt (VS08), das pragma nicht kompilierbar war. Nachdem ich alles durch traditionelle Include Guards ersetzt hatte, gings einwandfrei.

So Far...

Laguna

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

06.12.2009, 16:14

Also wenn pragma unterstützt wird, dann sollte es den genau gleichen Effekt haben, wie die include Variante.

Was halt für pragma spricht ist, dass es verhindern soll, dass die Dateien überhaupt mehrfach geöffnet werden müssen. Es steckt also ein Optimierungsgedanke dahinter und auch der Grund, warum ich beides drin habe. Kostet ja nix. (Header lasse ich eh automatisch generieren und da habe ich halt beides drin).

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

9

06.12.2009, 16:49

Zitat von »"Laguna"«

Imho ist die define Variante zu bevorzugen, da diese auch verworrene Include-strukturen (rekursion oder ähnliches) sauber erkennt und behebt.

Hatte letztes Jahr ein größeres Projekt (VS08), das pragma nicht kompilierbar war. Nachdem ich alles durch traditionelle Include Guards ersetzt hatte, gings einwandfrei.

So Far...

Laguna


Dieser Effekt sollte nur auftreten, wenn du vor/nach dem #ifndef/#endif noch was stehen hast, was aber nicht sinn der sache ist.

Werbeanzeige