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

S4My

unregistriert

11

06.07.2012, 14:45

Nein, ist nicht das Gleiche:
pragma once muss vom Compiler nicht Unterstützt werden
pragma once ist meißt optimiert (z.B. in MSVC)
manche Compiler erkennen und optimieren auch Includeguards (aber dies ist natürlich kein Muss)
Ach Gottchen, ja das ist mir klar. Deshalb die schönen Worte "im Prinzip". Fakt ist das die am häufigsten benutzten Compiler diese Direktive unterstützen, weshalb man sich kaum Sorgen machen muss, zumindest sehe ich das so. Ich wollte ihm nur helfen ein klein weinig zu verbessern, wollte ihm aber nicht eine mehrstündige Vorlesung halten wie, was und warum.
Versteh mich nicht falsch, es ist vollkommen berechtigt solche Dinge zu posten, aber nicht unbedingt notwendig. Wenn es ihn wirklich interessiert worum es sich dabei handelt und er nicht blind etwas programmieren möchte sieht er sowieso nach worum es sich hier handelt.

Mir kommt es so vor als würden viele in diesem Forum nicht wirklich lesen was andere schreiben sondern dies nur überfliegen. Wenn ich bereits sage das es nicht vollkommen das gleiche ist so wird man das doch verstehen können, oder täusche ich mich da? Oft sind es vor allem die älteren Mitglieder die gerne sofort die gesamte Sprache erklären möchten weil ein kleines Komma nicht geschrieben wurde. Programmierer die das was sie machen ernsthaft tun wollen sehen diese Dinge immer nach, sofern dies möglich ist, somit braucht man nicht immer penibel auf jede Formulierung achten. Es ist quasi das trennen der Spreu vom Weizen. Meiner Meinung nach braucht man da nicht immer gleich alles in Frage stellen was gesagt wurde.

S4My

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

12

06.07.2012, 14:51

Wenn ich bereits sage das es nicht vollkommen das gleiche ist so wird man das doch verstehen können, oder täusche ich mich da?


Das sind aber wichtige Unterschiede und man sollte das definitiv nicht verwechseln. Man kann ja durchaus beides machen, falls man jeglichen Vorteil von pragma once für sich beanspruchen will:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
#ifndef BLA_H
#define BLA_H

#if _MSC_VER > 1000
#  pragma once
#endif //  _MSC_VER > 1000

#endif // BLA_H


Dabei geht natürlich der positive Effekt für Schreibfaule verloren.
@D13_Dreinig

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

13

06.07.2012, 14:56

@S4My: Wenn jemand dir glaubt und immer #pragma once verwendet und später herausfindet, dass es auf seiner anderen Platform nicht funktioniert hat er eine menge Arbeit.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

S4My

unregistriert

14

06.07.2012, 15:06

Das sind aber wichtige Unterschiede und man sollte das definitiv nicht verwechseln.
Ja, schon, aber für welche die es schnell und einfach verwenden möchten reicht das für den Anfang. Wie gesagt, wer dann nicht blind programmieren will sieht ohnehin nach und wird diese Unterschiede bemerken.

@S4My: Wenn jemand dir glaubt und immer #pragma once verwendet und später herausfindet, dass es auf seiner anderen Platform nicht funktioniert hat er eine menge Arbeit.
Schön und gut, das ist allerdings bei so ziemlich allem so. Für die breite Masse der Plattformen funktioniert das, der Rest hat zwar mehr Arbeit, jedoch ist das in meinen Augen kein Grund diesen Vorschlag nicht zu machen. Überall, ob bei Programmen, Spielen, Programmiersprachen, etc. gibt es Ausnahmen bei denen ein vollkommen fehlerfreier Einsatz nicht garantiert ist, ganz auf dies zu verzichten würde jedoch heißen gar nichts mehr zu machen. Wie schon viel zu oft erwähnt, wer nicht blind etwas schreiben will informiert sich sowieso.

Und einfach weil es mich interessiert: wie sieht es denn bei euch aus, was verwendet ihr, ich für meinen Teil mache von #pragma once gebrauch und hab es auch erst recherchieren müssen, jedoch war mir danach klar mit was für einer Art Befehl ich es hier zu tun habe.

Jenen die nicht nachsehen kann sowieso nicht wirklich geholfen werden...

Mlg
S4My

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

06.07.2012, 16:30

Ich verwend in der Regel eine Kombination von #pragma once und Include Guards, wie David_pb sie oben gezeigt hat. In Code, der rein nur für MSVC gedacht ist, verwend ich manchmal auch einfach nur #pragma once...

GameProggD3D

Frischling

  • »GameProggD3D« ist der Autor dieses Themas

Beiträge: 67

Wohnort: Walding

Beruf: Schüler

  • Private Nachricht senden

16

06.07.2012, 19:18

Übrigens: Ich finde es nicht verwirrend, wenn der namespace weggelassen wird ;)
Ich finds eher nervig, wenn man ne riesige Typbezeichnung hat.

Und ich glaub, ich bleib beim #define statt #pragma once
Programmiere Zombie-Spiel mit nem Freund

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

17

06.07.2012, 19:45

Wieso nicht einfach beides verwenden? #pragma once hat, wenn es unterstützt wird, potentiell nur Vorteile und wenn es nicht unterstützt wird, hast du immer noch den Include Guard...

Werbeanzeige