Christian Seiler: Fragen zu C++

Beitrag lesen

Hallo,

cout << "Hello World!" << ;

^
                            da fehlt natürlich ein Ausdruck

cout << "Hello World!" << "\n";

oder gleich

cout << "Hello World!\n";

Ich hab es mit

gcc -mno-cygwin -o test hallo.cpp

versucht, aber das will nmicht funktionieren, da bekomme ich 100 Fehler wie  "undefined reference to cout", "undefined reference to ostream::operator<<<int>"...

Brauche ich dann vielleicht einen anderen Header und andere Befehler?

Andere Header nicht, aber warscheinlich musst Du dem Linker noch sagen, dass er andere Bibliotheken verwenden soll. Wie gesagt, ich kenne mich mit Cygwin nicht soo sehr aus, daher überlasse ich das lieber mal einem Experten.

Das wäre ja weiter so eine Art Session, aber machen das alle Programme so? Ich meine, wenn ich ein programm öffne, udn ich verändere einstellungen bleibt das machmal nur zur Laufzeit.

Klar - dann speichern die halt nichts ab.

Also wie ich das sehe gibt s 3 Stufen

  1. conf-Datein/Registry um grundlegende Dinge fest zu speichern
  2. was weiß ich um Information für die Laufzeit eines Programmes zu speichern
  3. Informatioenn in Variablen für die LAufzeit eines Scriptes zu speichern.

2 und 3 sind irgendwie das gleiche...

Das Problem bei 2. besteht darin, dass ein Programm ja oft aus mehreren Datein oder mehreren Fenstern besteht besteht, wo die Informationen alle irgendwie gespeichert werden müssen, udn nach Ende wieder weg sind.

Wieso "wo sie gespeichert werden"? Ich meine, es gibt 3 Ansätze für Programme mit mehreren Fenstern: pro Fenster 1 Instanz, pro Fenster 1 Thread und alle Fenster in einem Prozess. Alles mit seinen Vor- und Nachteilen.

Ach ja! Auf Linux wird ja alles immer extra kompiliert, daher das ganze Gehampel mit dem Source-Code! Aber unter Windows ist das ja anders, das wird einmal (vor?)-kompiliert, und läuft dann auf sämtlichen Versionen von 95-XP, oder? Die Unterschiede die bei Linux durch das jeweils verschiedene Compilierenausgeglichen werden, werden bei Windows wohl durch den jeweiligen Installer ausgeglichen, der je nachdem verschiedene VErsionen einiger kompilierter Dateien "installert" oder habe ich das falsch vestanden?

Nicht ganz. Ein Programm, das unter z.B. SuSE Linux 7.3 kompiliert wurde, "läuft" im Normalfall auch auf Debian 3.0, ist halt nur nicht auf diese Distribution angepasst. (und müllt u.U. bestimmte Pfade zu) Nur wenn Bibliotheken nicht in der passenden Version vorliegen, müssen diese _zusätzlich_ in das Bibliotheksverzeichnis kopiert werden. (und danach muss ein ldconfig laufen gelassen werden, um den "Linker Cache" upzudaten) Unter UNIX haben "shared objects" die Version schon im Dateinamen mit drinnen, d.h. man kann von einer Bibliothek theoretisch unendlich viele Versionen installieren. Nur wenn Du ein Linux-Programm auf einem anderen UNIX-Derivat laufen lassen willst, mit einer anderen Kernel-Architektur (z.B. HURD, *BSD, Solaris, HP-UX, AIX), dann musst Du neukompilieren. (sofern diese Programme sich an POSIX halten, wenn sie aber darüber hinaus gehen, dann müssen sie natürlich für jedes System verschiedenen Code mitbringen)

Grüße,

Christian