Andreas Korthaus: 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";

ah so ;-) Frag mich dann nur warum das in einem Beispiel das ich vorigen hatte ohne Erklärung parallel verwendet wurde.

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.

Naja, das weiß ich natürlich überhaupt nicht wie das geht ;-) Aber was ist denn der "Linker"? Udn was hat es mit den verschiedenen header-Dateien aus sich? Du hast gesagt Du hast mit der <iostream.h> lange nicht mehr garbeitet, was verwendest Du sonst und wieso? Muß ich dann für jede Header-Datei total umlernen?

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...

wie gesagt kenn ich ich mich wenig aus und kann das nicht so gut ausdrücken, vermutlich meinte ich sowas wie Du unten ;-)

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.

Naja, aber das Kapitel kommt vermutlich später ;-)

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)

Hab auch noch nie richtig mit Linux gearbeitet, eigentlich fast nur auf meinem webserver mit SSH. Scheint aber ne Ecke komplizierter zu sein als PHP/PERL, vor allem da ich in C++ ja leider nicht die vielen schönen Funktionen und Module habe wie ich PHP und MySQL! Wenn ich denn mal so einen Einstieg gefunden habe und die Grundlagen kann, ist es dann schwierig ein GUI-Tool ür Win zu basteln? Ich weiß, kann man nicht pauschal beantworten, nur habe ich zur Zeit übehaupt keine Vorstellung was da auf mich zukommt, und geht das überhaupt vernünftig ohne MS Visual Studio oder Visual C++?

Vilen Dank schonmal und viele Grüße
Andreas