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
Quellcode |
|
1 |
struct Meine_Struktur; |
C-/C++-Quelltext |
|
1 |
enum MyEnuM;
|
Zitat von »"neptun"«
Ok, danke erstmal.
Eine Struktur doppel deklarieren darf man ja auch nicht. Wie kann man so ein Problem lösen? Muss man da mit Include-Guards arbeiten?
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
#if defined _MSC_VER && _MSC_VER >= 1020 #pragma once #endif #ifndef XXX_H #define XXX_H class foo{ }; #endif |
Zitat von »"drakon"«
Zitat von »"neptun"«
Ok, danke erstmal.
Eine Struktur doppel deklarieren darf man ja auch nicht. Wie kann man so ein Problem lösen? Muss man da mit Include-Guards arbeiten?
Exakt.
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 11 #if defined _MSC_VER && _MSC_VER >= 1020 #pragma once #endif #ifndef XXX_H #define XXX_H class foo{ }; #endif
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
#ifndef XXX_H #define XXX_H #pragma once class foo { }; #endif // XXX_H |
Zitat von »"David_pb"«
[...]
Schöner ist es wenn der Includeguard tatsächlich die komplette Datei umfasst:
[...]
Zitat von »"Beliah"«
Zitat von »"David_pb"«
[...]
Schöner ist es wenn der Includeguard tatsächlich die komplette Datei umfasst:
[...]
Tut der doch.
Zitat von »"Beliah"«
Und da, soweit ich weis, #pragma once - dass, auch mehr machen soll als "normale" include guards- nur bei Microsoft Compilern verfügbar ist kann man doch vorher abfragen ob es ein MS-Compiler ist der gerade die Datei bearbeitet.
Zitat von »"David_pb"«
Nein, der Include-Guard umschließt bei drakon's Version, klar ersichtlich, nicht den kompletten Dateiinhalt (#pragma once kommt bei ihm noch davor). Das geht natürlich, aber schöner ist es, wenn vor dem Include-Guard nichts mehr kommt. Das hat z.B. den Vorteil das der Präprozessor, bei Compilern die #pragma once nicht unterstützen, die #pragma Direktive nicht immer wieder auswerten muss.
Zitat von »"David_pb"«
Pragma once ist kein Standard, richtig. Allerdings unterstützen auch andere, nicht Microsoft Compiler, dieses Feature. Daher macht ein Abfragen eigentlich keinen Sinn sondern schränkt nur unnötig ein.
Werbeanzeige