• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Kdevelop 3.3.0 einfaches Terminal Programm wie früher erst.

Freak33

Newbie
Hi,

ich mache gerade einen Lehrgang über C++, dazu ist mein Lehrmaterial auf eine ältere Version von KDevelop ausgelegt. Es ist die Version die bei Suse 9.0 Prof. gleich mit dabei ist.

Nun habe ich mir mal eine Linux Live Distr. - Knoppix 4.0.2 heruntergeladen, um auch unterwegs weiterlernen zu können. Die gleiche Version auf dem Laptop zu installieren, fällt wegen seines Alters und der dadurch geringen HDD Größe aus.

Nun habe ich ja KDevelop 3.2.0 in der Knoppix Version. Es hat sich anscheinbar vieles in dem Programm geändert, aber die Grundprogrammierung von C++ kann ja nicht grundlegend anders geworden sein.

Bei Suse 9.0 kam ich so zu meinem Einstiegsprojekt, mit dem ich die Übungen mache.

Projekte->Neues Projekt->Terminal->C++
Quellen und Header erstellen -> aktiviert
GNU-Standarddateien -> deaktiviert
Benutzerdokumentation -> deaktiviert
API-Dekumentation -> deaktiviert
lsmDatei -> deaktiviert

Die nächsten Punkt wurde so gelassen und immer auf Nächster geklickt und schliesslich erstellen.

Dann erhalte ich folgenden Quelltext:


Code:
/*Allgemeine Infos, etc. als Kommentare, mehrzeilig*/

#include <iostream.h>
int main() {
cout << "Hallo Welt";
return 0;
}

Wie komme ich mit KDevelop 3.2.0 zu so einem Anfangsquelltext? Es gibt da bei der Projektauswahl gar keinen Menüpunkt Terminal mehr.

Danke schon mal für Hilfen.
 

TeXpert

Guru
Freak33 schrieb:
Dann erhalte ich folgenden Quelltext:

Code:
/*Allgemeine Infos, etc. als Kommentare, mehrzeilig*/

#include <iostream.h>
int main() {
cout << "Hallo Welt";
return 0;
}

Argh... vergiss diesen code :) iostream.h ist für g++ deprecated...
richtig (beachte den Namespace...):
Code:
/*Allgemeine Infos, etc. als Kommentare, mehrzeilig*/

#include <iostream>
int main() {
std::cout << "Hallo Welt";
return 0;
}

Wie komme ich mit KDevelop 3.2.0 zu so einem Anfangsquelltext? Es gibt da bei der Projektauswahl gar keinen Menüpunkt Terminal mehr.
naja, ein wenig Eigeninitiative.. und etwas Intuition führen sehr schnelle zu Projekt -> neu -> C++ -> Simple Hello World Programm...
 
OP
F

Freak33

Newbie
Ja da war ich natürlich schon aus Eigeninitiative. Ich bin nur aufgrund des wesentlich anderen Codes unsicher ob ich da richtig bin. Ich bin noch eher bei den Programmieranfängen von C++.

Die eigentliche Frage ist eher, ob sich tatsächlich so viel verändert hat, dass diese ganzen neuen Anweisungen mit im Quelltext stehen müssen, oder kann ich auch noch in meiner alten Form weiterschreiben ohne das sich Probleme einstellen werden?

Der neue Code von Hallo Welt sieht ja nun grundlegend anders aus.

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream>
#inlude <cstdlib>
using namespace std;

int main(int argc, char *argv[])
{
cout <<"Hello, world!" << endl;
return EXIT_SUCCESS;
}

Und wenn schon Hallo Welt so grundlegend anders aufgebaut ist, habe ich meine Bedenken, wie es erst bei komplexeren Sachen werden soll.
 

TeXpert

Guru
ok,schauen wir mal zeilen- bzw. blockweise:
Code:
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
naja, man kann auch ohne leben...

Code:
#include <iostream>
ist gleich

Code:
#inlude <cstdlib>
braucht das hallo welt noch nicht, d.h. für ein Basisdingen ist das schon zuviel ;)

Code:
using namespace std;
lerne was über Namespaces, vgl. dazu meine andere Version

Code:
int main(int argc, char *argv[])
wenn Dir die Cmdline-Argumente egal sind, könnend ie params auch weg, also "int main()"
Code:
cout <<"Hello, world!" << endl;
hier ist nur der Unterschied, dass die den std-namespace schon komplett verfügbar gemacht haben, ohne das using ständ hier: std::cout. Ach hab ich schon gesagt, lerne namespaces ;)

endl ist nur ein Newline-zeichen auf den Stream

Code:
return EXIT_SUCCESS;
ist halt schöner zu lesen als "return 0;"

also: wo steht da jetzt so viel mehr?
 
OP
F

Freak33

Newbie
Danke dann ist es wohl doch ähnlich nur leider ganz schön verändert und mit zusätzlichem Balast zur alten Version ausgestattet. Namespaces werde ich sicher auch noch lernen, aber eins nach dem anderen, bin noch bei den Grundlagen.
 
Moin Freak33,

eigentlich hat sich gar nichts verändert. Die includeanweisungen mit dem .h waren unter c++ meines Wissens nach schon immer verkehrt bzw. wurden nur für die C Programmierer noch zugelassen oder um ältere Bibliotheken noch verwenden zu können. Und statt std::cout nur cout zu verwenden ist schlechter Programmierstil da der Namespace std quasi immer zur Verfügung steht. Das wird gerne verwendet um eben das std:: wegzulassen, ist aber nicht richtig und auch nicht schön.
Code:
#include <iostream>

int main() {
  std::cout<< "Hello World\n";
  return(0);
}
Ist, soweit mir bekannt, korrektes C++. Und wo ist der große Unterschied zu deinem ersten Codebeispiel? Siehst Du: Es hat sich eigentlich nichts verändert.
 

TeXpert

Guru
Geier0815 schrieb:
eigentlich hat sich gar nichts verändert. Die includeanweisungen mit dem .h waren unter c++ meines Wissens nach schon immer verkehrt bzw. wurden nur für die C Programmierer noch zugelassen oder um ältere Bibliotheken noch verwenden zu können.
Ack, gcc hat sie in älteren Versionen unterstüzt, aber an sich flashc.
Und statt std::cout nur cout zu verwenden ist schlechter Programmierstil da der Namespace std quasi immer zur Verfügung steht.
hier kommts auf den Compiler an, gcc bis afaik 3.0 hat using namespace std automagisch gesetzt und einige MS-Compiler machen das auch so.... richtiger ist aber das explizite Nutzen von Namespaces
 
Oben