Modulo
-
SeppJ schrieb:
Ich weiß nicht mehr, welcher Autor oder Verlag, außer dass das Buch gelb war. Aber es war eben das Buch zum Thema im Handapparat. Und natürlich hatte jemand die STL-Referenz im letzten Kapitel heraus gerissen, so dass diese mir monatelang unbekannt war.
Jep. Und dann kombinierst das noch mit Borland C/C++ 3.1 for DOS und mit einem damals fehlenden Internetzugang und das Debakel ist perfekt
-
Swordfish schrieb:
Und dann kombinierst das noch mit Borland C/C++ 3.1 for DOS und mit einem damals fehlenden Internetzugang und das Debakel ist perfekt
Als das aktuell war, war das Top. Quasi das CLang der damaligen Zeit
-
SeppJ schrieb:
Ein Autor, der bei der Erklärung dieser (grundlegenden) Begriffe solch dicke Fehler macht, ist inkompetent (oder sehr müde
).
Nicht unbedingt.
-
Ihr habt ja gesagt das im den gezeigten Code das erste keine deklaration und das zweite keine Definition ist.
Und da ich mir natürlich auch im internet verschiedene Tutorials angesehen habe und dort zwei verschiedene Varianten von Deklaration und definition auftauchen (einmal die Variante wie hier gezeigt und einmal umgekehrt).
Könnt ihr mir deshalb auf einfache und verständliche art und weise erklären was der unterschied zwischen den beiden sachen ist?
-
^Ohne Anspruch auf Tiefgang und Vollständigkeit^
Deklaration = reine Bekanntmachung eines Bezeichners = Schau Compiler, mich gibts. Ich hab gewisse Charakteristika, aber ich bins nicht wirklich. Gehört solltest von mir aber jetzt gehabt haben.Jede Deklaration ist gleichzeitig eine Definition außer wenns
extern
deklariert ist = ich bin in einer anderen Übersetzungseinheit
- eine Funktion ohne Body ist
- eineclass
- oderstruct
-deklaration ist.
- einstatic
Member einer Klasse ist.
- ...
Vielleicht helfen Beispiele. Man bekommt mit der Zeit ein Gefühl dafür:
foo.h
#ifndef FOO_H_INCLUDED #define FOO_H_INCLUDED extern int i; // Deklaration -> mich gibts. wo? frag den Linker. int foo( int, int ); // Deklaration -> aufrufen ohne Definition is nicht. class bar; // Deklaration -> Instanziieren ist nicht. Groesze unbekannt. // Pointer darauf = ok weil Groesze dafuer egal. #endif /* FOO_H_INCLUDED */
foo.cpp
#include "foo.h" int i = 42; // Deklaration, Definition und Initialisierung in einem int foo( int f, int f ) { return f * f; } class bar { friend void baz(); // deklariert eine Funktion als friend static int data; // deklariert data als static Member; }; int bar::data = 47; // definiert und initialisiert
main.cpp
#include "foo.h" int main() { i = 666; // remember? das extern Dingens das eigentlich in bar.cpp lebt? int k; // Deklaration und Definition in einem - ja, ich leb' hier. }
-
Swordfish schrieb:
Jede Deklaration ist gleichzeitig eine Definition außer wenns
extern
deklariert ist = ich bin in einer anderen Übersetzungseinheit
- eine Funktion ohne Body ist
- eineclass
- oderstruct
-deklaration ist.
- einstatic
Member einer Klasse ist.
- ...
Vielleicht wär's besser, wenn du es umgekehrt beschreiben würdest. Denn jede Definition ist eine Deklaration, ohne Ausnahmen. Gerade zählst du bloß allerlei Möglichkeiten auf, Deklarationen zu machen.
-
Er hat halt das wording des Standards direkt übernommen.
-
... und ohne Beispiele und irgendwann kapieren was gemeint ist Blickt mans eh ned.
-
SeppJ schrieb:
Dank dem Internet verbreitet sich das sogar recht flott.
dank dem internet ist es auch mit dem genitiv nicht mehr weit her
-
genitiv_ins_wasser schrieb:
dank dem internet ist es auch mit dem genitiv nicht mehr weit her
Du spielst auf "dank dem" an? Da gehört ursprünglich ein Dativ hin ("wem dankt man?"), der Genitiv ist die neuere Entwicklung.
-
Wie fliegt denn ein Flugzeug? Ich dachte wirklich immer es wäre wegen dem Auftrieb durch den höheren Druck an der Unterseite des Flügels :s
-
hardware schrieb:
Wie fliegt denn ein Flugzeug? Ich dachte wirklich immer es wäre wegen dem Auftrieb durch den höheren Druck an der Unterseite des Flügels :s
Wenn du es in der Sprache von Druckunterschieden ausdrücken möchtest, dann stimmt das natürlich auch*. Die Frage ist, wie der Druckunterschied zustande kommt. Die übliche Erklärung, dass die Luft oben rum einen längeren Weg zurück legen müsse, ist leicht als Unsinn zu erkennen: Woher soll die Luft oben wissen, was die Luft unten macht+? Dieses einfache Bild mit inkompressiblen, reibungslosen Medien ist sowieso gänzlich ungeeignet; man kann sogar zeigen, dass ein 3D-Körper überhaupt niemals (dynamischen) Auftrieb unter diesen Bedingungen erfahren kann.
Die genaue Erklärung ist letztlich komplex, ich verweise da auf den verlinkten Wikipediaartikel. Die allereinfachste Erklärung, die man noch gelten lassen kann, ist, dass das wichtigste am Flügel nicht die Form ist, sondern der Winkel zur Flugrichtung. Wenn er unter diesem schnell durch die Luft gezogen wird, dann treffen, wie man sich recht intuitiv vorstellen kann, einfach mehr und schnellere Luftteilchen auf die Unterseite als auf die Oberseite.*: Letztlich müssen eben einfach mehr Luftteilchen von unten gegen den Flügel donnern als von oben. Ob man das Druckunterschied, Rotationserhaltung oder sonst wie nennt, ist nur eine Frage der Sichtweise.
+: Und vieles mehr: Wie fliegt ein Papierflugzeug oder andere FLugzeuge mit symmetrischen Flügeln? Wieso können Flugzeuge auf dem Rücken fliegen?
-
Wie funktioniert der Heisenberg-Kompensator?