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

Tracert

Treue Seele

  • »Tracert« ist der Autor dieses Themas

Beiträge: 108

Wohnort: Braunschweig

Beruf: Student

  • Private Nachricht senden

1

01.08.2003, 00:19

_DEBUG-Makro

Und noch eine kleine Sache: :ohoh:

Also, ich wollte, dass ein Teil des Codes nur in der Debug-Version mitkompiliert wird oder andersherum gesagt, dass bei der Release Version einige bestimmte Zeilen einfach weggelassen werden.

Soweit so gut. Hab mir gedacht, dass Automatisch in den Präprozessor übergebene Makro _DEBUG wird sein Zweck erfüllen und habe folgende Makros eingebaut:

Quellcode

1
2
3
4
5
#ifdef _DEBUG
#define SINAPSE_DEBUG 0
#else
#define SINAPSE_DEBUG 1
#endif


Dann habe ich die Codezeilen mit einer If-Abfrage umschlossen. if(SINAPSE_DEBUG==0) { Anweisungen } Das Dumme an der Sache: SINAPSE_DEBUG wird irgendwie immer 0, egal ob _DEBUG definiert ist oder nicht (also egal ob ich das in der Release-Version kompiliere oder in der Debug-Version).

Jetzt würde mich doch mal brennend interessieren, warum das so ist... (?)

Weiß da jemand was?
TR

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

01.08.2003, 00:29

Keine Ahnung, aber hast Du in Deiner Definition nicht was vertauscht?
Wenn _DEBUG definiert ist, sollte SINAPSE_DEBUG doch wohl auch auf 1 gesetzt werden und nicht auf 0, oder?

3

01.08.2003, 05:11

Ich weis auch nicht ob das so viel Sinn macht wenn ich eine zusätzliche IF-Abfrage startet, die abrfragt ob der Debug-Mous läuft oder nicht. Ich denke es sollte doch so sein, das bei der Release-Version absolut gar nichts mehr von dem Debug-Zeugs vorhanden ist. Das würde deine Abfrage doch mit einschließen, oder nicht?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

01.08.2003, 08:01

Diese if-Abfrage sollte wenn dann auch mit dem Compilerbefehl #if gemacht werden und nicht mit dem "echten" if.

Tracert

Treue Seele

  • »Tracert« ist der Autor dieses Themas

Beiträge: 108

Wohnort: Braunschweig

Beruf: Student

  • Private Nachricht senden

5

01.08.2003, 12:10

Ja, schon möglich.

Fakt ist, dass ich diese Zeilen am Ende (wenn das Programm soweit fertig ist) komplett herauslöschen werde. Sie sind nur dazu da, zusätzliche Debug-Ausgaben zu machen, so lange ich am Code noch öfter was ändere. Trotzdem will ich, dass das ganze auch jetzt schon in der Release-Version wegfällt.
Daher ist das mit der if-Abfrage eh nur temporär und schien mit in dem Moment das einfachste.

Ob SINAPSE_DEBUG nun 0 oder 1 ist, ist doch völlig wurscht, solange das in der if-Abfrage richtigherum abgefragt wird. Oder? Außerdem ändert das nichts daran, dass dieses Makro immer 0 ergibt. Würd mich mal interessieren, wieso?

TR

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

01.08.2003, 12:35

Keine Ahnung, aber ich möchte Dich trotzdem davon überzeugen, die Debug-Sachen für immer drinzulassen und keine "if"-Abfrage zu verwenden, sondern ein #if. Dann "überliest" der Compiler das Ganze nämlich beim Release. Aus "if(0)" würde er zwar wahrscheinlich auch schon schließen, dass der Code nie ausgeführt wird, aber man weiß ja nie.
Guck mal, ob bei den Projekteinstellungen für Debug das _DEBUG-Makro eingetragen ist... sollte aber eigentlich von vornherein so sein!

Werbeanzeige