#define
-
das war nur ein Beispiel, natürlich ist es einfacher zu machen, wie Ihr geschrieben habt, wenn es wirklich so ist, aber ich habe andere Sachen in meinem Programm, wie z.b: DEFAULT_BLABLA oder ähnliches, und es ist mir lieber sie oben mit
#define
zu definieren.Ich bin immer bereit etwas neues zu lernen. Warum genau war es nochmal einfach #define zu verwenden, als eine globale (am besten modul-lokale) Konstante zu verwenden?
-
vermutlich ist mnab ein Ex-C-Coder...;)
-
also große Vorteile gibt's nicht außer daß es vielleicht schöner so ist, ich weiß es nicht, aber es wird oft so gemacht:
#define DEFAULT_PORT bla #define IRGENDWAS BLABLA
und so weiter. Ich hab aber mehrmals gelesen, daß man auf die "define" verzichten sollte, da es für den Compiler nicht so toll ist.
Grüße,
mn
-
Och, dem Compiler macht es nichts aus. Das Problem ist, dass er wild drauf los ersetzt und auch mal stören könnte. Defines sollte man nur benutzen wenn es sonst in C++ nicht zu machen ist, wie z.B. #include-Guards oder irgendwas Compilerspezifisches. Es gibt genug Alternativen, wie z.B.: inline-Funktionen, templates und const. Ich habe früher auch für Konstanten und kurze Funktionen das #define benutzt (weil ich mit C angefangen habe), bin aber inzwischen vollständig auf die sehr guten Alternativen von C++ umgestiegen.
-
Hallo.
Ich hab aber mehrmals gelesen, daß man auf die "define" verzichten sollte, da es für den Compiler nicht so toll ist.
Der Compiler hat damit nicht viel am Hut.
#define ALTER 3 cout << ALTER;
#define ist eine Präprozessor-Direktive, und ledliglich eine String-Ersetzung.
Man weißt den Präprozessor also an, alle vorkommen des Strings 'ALTER' gegen 3 auszutauschen.
Ich gehe sogar so weit zu behaupten, dass die #define-Anweisung in der vom Präprozessor produzierten Zwischendatei "futsch" ist. Übrigens führt #define keine Typenprüfung durch.BodPa
-
also große Vorteile gibt's nicht außer daß es vielleicht schöner so ist, ich weiß es nicht
Also ich weiß nicht, ob ein
#define foo bar
schöner ist, als ein
const Typ foo = bar;
Aber kommt es beim Programmieren wirklich auf die Schönheit an?
-
Ja. Aber das Tolle ist wohl, dass #define und const sich so verdammt ähnlich verhalten. Siehe auch
#include <ctime> #define foo1 std::time(0) time_t const foo2 = std::time(0);
Kopfschüttelnd.
-
@Danial E.: cih bezog mich eher auf Beispiele wie
#define ALTER 3 cout << ALTER;
(Ich will hiermit nicht den Author dieses Beispiels persönlich angreifen)
Das Makros etwas anderes als Konstanten sind ist mir sehr wohl bewusst. Entschuldige, das das falsch rübergekommen ist.
-
Irren ist menschlich.
Übrigens, Helium, kennst du noch einen "N-Fighter"? Das bin ich ;).
-
Klar kenn ich dich noch.