#define und Konstanen werden beim includieren von sdl.h "überschrieben"
-
Hallo
mir ist gerade etwas für mich komisches aufgefallen. Geht zwar um Sdl ist aber glaube eher ein allgemeines c/c++ Problem.
In meinem Programm benutze ich SDL für die Grafik und includiere in main.cpp "SDL.h"in "other.h", die ua auch von main.cpp includiert wird habe ich einige Konstanten.
Jetzte wollte ich da
#define TRANSPARENT 0xFF00FF
oder bzw.
const int TRANSPARENT = 0xFF00FF;
hinzufügen.Seltsamerweise gibt in main
cout << TRANSPARENT;
immer 1 aus anstatt der erwarteten 16xxxxxxAlso muss es von Sdl wohl schon so eine Konstante geben. (ich finds zwar nicht auf http://www.pygame.org/ctypes/sdl-api/index.html aber egal)
Wieso ergibt das keine Fehlermeldung "blabla doppelt definiert?"
Wenn ich TRANSPARENT in main.cpp definiere gibt es die ja auch. Ich hätte aber gerne alle Konstanten in einer Datei.Wie kann man sich davor schützen, dass es bestimmte Bezeichner schon gibt?
-
Hallo Doppelmoppler,
du könntest dir z.B. einen eigenen namespace definieren, in dem alle deine Konstanten liegen, dadurch kannst du diese gezielt ansprechen und sie werden nicht mehrfach definiert ....
namespace sdl_const { const int TRANSPARENT = 0xFF00FF; }Und dann ansprechen mit
sdl_const::TRANSPARENT
-
ah namespaces...
stimmt, da war mal was. danke