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

1

11.05.2005, 15:01

Löschen

Löschen

2

11.05.2005, 16:27

#if und #else.

weigo

Treue Seele

Beiträge: 234

Wohnort: Deutschland

  • Private Nachricht senden

3

11.05.2005, 16:35

Warum willst du dafür #define verwenden?
Ich weiß nicht wie du den Butten erzeugst, aber dieser kann sicher seinen Namen als String erhalten, dann wäre es doch einfacher folgendes zu machen:

Quellcode

1
2
3
4
if ( wert )
    Button.SetText("Bla bla");
else
    Button.SetText("erster button");


Mit defines würde ich dem Fall auf keinen Fall arbeiten, dafür sind defines nicht gemacht worden!
Sie werden ja auch vom Präprozessor verarbeitet und nicht vom Compiler, daher macht das wenig Sinn.

Eine Alternative wäre vielleicht so etwas:

Quellcode

1
2
3
4
5
#if defined( TEXT1 )
#    define DESC_TEXT1 ("Bla bla")
#else
#    define DESC_TEXT1 ("erster button")
#endif


Im Programm musst du dann irgendwo TEXT1 definieren, wenn du den ersten Text haben willst, z.B. in den Projekteigenschaften unter Präprozessor. Falls nicht, dann wird der zweite Text verwendet.
Du kannst auch explizit #define TEXT1 verwenden und #undef TEXT1.

Aber ich rate dir davon ab! Mach es so wie im ersten Beispiel oder definier dein Problem präziser!

4

11.05.2005, 16:40

Löschen

weigo

Treue Seele

Beiträge: 234

Wohnort: Deutschland

  • Private Nachricht senden

5

12.05.2005, 08:29

Schön, dass ich dir helfen konnte.

Auf defines solltest du nur in bestimmten Situationen zurückgreifen, nämlich dann, wenn du den Präprozessor brauchst, also eine Verarbeitung vor dem kompilieren.
Generell solltest du immer versuchen:
Makros (Funktionen) durch [template] inline Funktionen auszutauschen und
Makro (Variablen) durch konstante Variablen zu ersetzen.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

12.05.2005, 16:35

ja, sicher du hast recht weigo, aber irgendwie kenne ich trotzdem kaum jemanden der keine defines benutzt, auch wenn er sie nicht bräuchte. Ich selber benutze defines, gerade wegen der optischen trennung. Ich weiss das keine so gute Idee ist aber machen tu ichs trotzdem ;). Ich denke ich bin da bei weitem nicht der einzige.

weigo

Treue Seele

Beiträge: 234

Wohnort: Deutschland

  • Private Nachricht senden

7

12.05.2005, 16:47

Ich nutze auch defines. Es gibt nicht immer eine Lösung ohne defines. Man muss sich eben über die Risiken bewusst sein und dementsprechend mit den Makros umgehen. Man sollte aber, wenn möglich darauf verzichten und es spielt keine Rolle ob ich:

Quellcode

1
2
3
4
5
#define VAR 5

oder

const int i_var = 5;


schreibe. Es spielt keine Rolle im Bezug auf die Benutzbarkeit, aber sehr wohl spielt z.B. die Typsicherheit und die Debugging Freundlichkeit eine Rolle.

Was meinst du mit optischer Trennung, das hört sich wirklich nach etwas unnötigem an ;)

Ich benutze defines z.B. für das Inkludieren von plattformspezifischen Headerdateien, da ich das vorm Kompilieren machen muss, kann ich nur auf defines zurückgreifen. Außerdem gibt es hin und wieder Makros, wo sich selbst mit Templates keine gute Alternative finden lässt.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

8

12.05.2005, 17:11

JAJA, is mir schon alles klar, ich wollte nur mal sagen das das fast jeder weiss das defines und allgemein Präprozessor Anweisungen in einem Chaos enden können (z.b. wegen der Typsicherheit) aber trotzdem kaum jemand kann sich defines verkneifen ;)

und mit optischer Trennung meine ich sowas:

C-/C++-Quelltext

1
2
#define MAX_PLAYERS 512
#define MAX_BULLETS 1024


also sehr wichtige Variablen. Die könnte mna natürlich auch mit const definieren, aber so wird ihre Wichtigkeit hervorgehoben :huhu:

DrthM2001

Alter Hase

Beiträge: 721

Wohnort: Karlsruhe

  • Private Nachricht senden

9

12.05.2005, 18:47

C-/C++-Quelltext

1
#define #define (x)(y) const (x)=(y);


DIE Lösung! ;) (nicht ernst gemeint)

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

10

12.05.2005, 22:11

LOL jep

Werbeanzeige