Anfänger-Problem
-
aber nicht #define pi sonder const double pi =
-
und warum bitte?
-
is bessa
-
#define ist eine einfache textersetzungsmaschine
const double gibt dem compiler tipips und hat einen typ direkt daneben stehen.#define ist aus C Zeiten, in denen es noch kein const gab
-
#define ist ne textersetzungsmaschine?
vielleicht meintest du preprözessor directive? aber es stimmt schon, pi wird durch die daneben stehende zahl ersetzt (bitte nich textersetzungmaschine nennen) #include ist ja auch aus C Zeiten, na und? Darf ich es in mein C++ program nicht benutzen?
-
für include gibt's aber nix besseres
und ich bleib bei "textersetzungsmaschine"
-
Textersetzungsmaschine find ich auch passend. Ein Text wird durch einen anderen ersetzt. Wie will man das sonst nennen.
-
genauso wie es genannt werden muss - preprozessor directive
-
Bei "const double pi =" führt der Compiler eine Typprüfung durch, hier z.B. auf double, ist ein gewisser Vorteil. Siehe auch Lektion 1 bei Scott Meyers (wegen Symboltabellen).
-
genauso wie es genannt werden muss - preprozessor directive
Was ist das denn jetzt für ein Schwachsinn. Darf ich 'for' dann auch nicht mehr schleife nennen, sondern nurnoch Befehl?
-
Wenn, dann Anweisung.
-
Original erstellt von davie:
für include gibt's aber nix besseresZumindest nicht in C/C++
-
Original erstellt von Helium:
Was ist das denn jetzt für ein Schwachsinn. Darf ich 'for' dann auch nicht mehr schleife nennen, sondern nurnoch Befehl?und seit wann ist for ein befehl?
-
Der Mensch befiehlt, die Maschine gehorcht!
Sequenz, Selektion und Iteration, das reicht für alles. "for" gehört zum Bereich Iteration.
-
Der Mensch weist an
-
STUMPF!
Aber #define hat den Vorteil, das es nicht unnötig speicher verbraucht, grade weil ein String im Quelltext durch einen anderen (durch den Preprozessor) ausgetauscht wird!
ansonnsten erzeuge ich ja ne Globale Konstante auf Variablenbasis, oder nit?! :p
-
#define ist weder C noch C++, einfach nichts. Verpönt!
-
#define eignet sich für include-guards, wenn nicht zufällig der compiler ein pragma once unterstützt
-
Original erstellt von THE_FreaK:
Aber #define hat den Vorteil, das es nicht unnötig speicher verbraucht, grade weil ein String im Quelltext durch einen anderen (durch den Preprozessor) ausgetauscht wird!
ansonnsten erzeuge ich ja ne Globale Konstante auf Variablenbasis, oder nit?! :pnur wenn du die addresse der variablen brauchst.
das faellt aber eher in die kategorie:
ich will bei #define bleiben, also lass uns schnell mal pro argumente ausdenken.einfach Effective C++ lesen und du bist geheilt.
-
Original erstellt von Shade Of Mine:
einfach Effective C++ lesen und du bist geheilt.Oder warten bis du in die Situation kommst, wie ich gerade:
[irgendwo in ncurses.h]
#define getch() ...[nun bei mir]
class Window
{
int getch(); // Huch?! Was ist denn nun kaputt
};Ok, muss man sagen das ncurses ja auch für C geschrieben ist. Aber da sieht man wie blöd das sein kann.