C++ in der Schule...Anfängerfragen :) wie krieg ich ne .cpp-Datei ans Laufen?

Jein

Jein

Aktives Mitglied
Thread Starter
Dabei seit
03.01.2004
Beiträge
1.676
Reaktionspunkte
16
hallihallo...
so, ich armer muss doch nun ernsthaft in der schule programmieren.. argh... das ist echt mal was was mir nicht ernsthaft spaß macht.
nun ja, ich kanns nicht ändern.
in der schule programmieren wir auf alten windows kisten mit borland C++ 5.02 wenn ich das richtig im kopf habe. die alte dose will ich hier aber nich mehr rauskramen nur um meine hausaufgaben machen zu können.
also hab ich mit erstmal Xcode runtergeladen, das ganze an sich geht auch soweit ganz gut, also ich schreibe mein progrämmchen und speichere es als .cpp (.h wird auch gespeichert, nur weiß ich nicht was das wieder ist :rolleyes: , wie ihr seht habe ich nicht wirklich ahnung von der sache.. )
unter borland konnte man das ganze schon während dem programmieren compilieren und dann laufen lassen.
nur wie kann ich das ganze auf dem mac machen? also die .cpp-
datei als anwendung laufen lassen?
ich kann zwar die .cpp-datei auf cd brennen und dann in der schule laufen lassen, aber das ist ja nicht sinn der sache..
auch eine fehlerkorrektur wie bei borland die mir sagt in welcher zeile fehler stecken habe ich noch nicht entdeckt. :-/

naja die hauptfrage ist wie gesagt, wie eine .cpp-datei zur anwendung machen?

ciao und danke schonmal
Jakob
 
XCode starten->File->New Project->ganz unten "C++-Tool" auswählen.

Fertig. Dann hast du oben so einen "Fenster-Button" neben dem roten Punkt (zwischen Punkt und Lupe). Damit kannst du den Editor in ein Sub-Fenster öffnen/verbergen. Wenn du dann auf main.cpp klickst, dann siehst du den Code.

Um ihn zu kompilieren und ihn laufen zu lassen, einfach auf dem Hammer mit dem "Play"-Symbol klicken.

:)
 
Terminal -> g++ datei.cpp

BadHorsie
 
danke danke ;)
gleich mal testen, ich werde berichten..
 
BadHorsie schrieb:
Terminal -> g++ datei.cpp

BadHorsie

Das Terminal ist kein Ersatz für eine gut funktionierende IDE. Nur mal so nebenbei. ;)
 
Klar, ermutige die Leute auch noch dazu mit einer IDE anzufangen. Es gibt mehr als genug "Programmierer" da draußen die ohne WindowsNT und M$ VisualStudio kein HelloWorld auf die Reihe kriegen.

BadHorsie
 
BadHorsie schrieb:
Klar, ermutige die Leute auch noch dazu mit einer IDE anzufangen. Es gibt mehr als genug "Programmierer" da draußen die ohne WindowsNT und M$ VisualStudio kein HelloWorld auf die Reihe kriegen.

BadHorsie

hey hey, ich weiß nichtmal mehr was eine IDE ist.. ich will ja auch kein programmierer werden sonder nur meine hausaufgaben machen die ich leider machen muss. will heißen ich kriege aufgabenstellungen die ich halt programmieren soll und dann als .cpp- datei abgeben muss. und die sollte ich halt vorher irgendwie prüfen können.
 
BadHorsie schrieb:
Klar, ermutige die Leute auch noch dazu mit einer IDE anzufangen. Es gibt mehr als genug "Programmierer" da draußen die ohne WindowsNT und M$ VisualStudio kein HelloWorld auf die Reihe kriegen.

BadHorsie

Naja, sorry.

Aber so wie ich das sehe hat er nicht die Absicht Programmierer zu werden, und auch nicht gerade viel Lust sich damit zu beschäftigen.

Wozu also ihm das Terminal reinwürgen? Vielleicht noch bei größeren Sachen ihm das makefile aufbrummen...

edit:

Siehste, sag ich doch. ;)
 
OK, in diesem Fall... :D

BadHorsie
 
tja, gleich gibts das nächste problem...
aalso. ich hab das ganze jetzt so gemacht wie nuke es erklärt hat und dort meinen code eingegeben. allerdings meldet er mir da vorne und hinten fehler, obwohl das ganze mit borland auf win einfandfrei funktioniert hat..
also, hier der code, winzig kurz und direkt aus dem c++ handbuch übernommen, einfach mal als test. :

#include <iostream.h>
void main ()
{
float a,b,c;
cout<<"Programm zur Addition von zwei Zahlen."<<endl;
cout<<"Geben sie die erste Zahl ein: ";
cin>>a;
cout<<"Geben sie die zweite Zahl ein: ";
cin>>b;
c=a+b;
cout<<"Die Summe von "<<a<<" und "<<b<<" ist "<< c<<"."
<<endl;
}


bei borland funktionierte das ganze so, bei Xcode leider nicht.
das rote kreuz was den fehlr anzeigt ist in der Zeile in der die geschweifte klammer aufgeht, als fehlerbeschreibung sagt er mir : 'main' must return 'int'
wo liegt also nun mein fehler? scheinbar gibts da wohl doch unterschiede in der eingabe des codes...
 
Der gcc ist da ein wenig ANSI-Pingelig :) - könnte man in den Optionen ändern, aber mach' mal einfach folgendes :

Signatur der Funktion ändern in :

int main ()

und am Ende (natürlich vor der letzten "{") :

return 0;

Dann läufts. War übrigens genau das was die Fehlermeldung aussagte :p

Gruß
Sascha
 
danke danke ;)
return 0; ist übrigens nicht unbedingt nötig wie ich grade gemerkt habe...
was heißt denn nu eigentlich void, bzw wo ist der unterschied zu int?
 
achso.. von wegen in den optionen ändern.. das wär garnicht mal schlecht, einfach damit ich nicht 2 sachen im kopf haben muss, in der schule sollte ich wohl schon das altbewärte benutzen.. oder funzt int da auch ? ;)
 
int funktioniert da 100%ig.

Es ist nur so:

void heißt "leer".

Das ist aber so gesehen falsch bei der main-Funktion. Ein Programm gibt in der Main-Methode IMMER etwas zurück. Egal welches System. "Altbewährt" ist es nicht. Es ist nur Windows-bewährt. ;)

"void main" ist so gesehen komplett falsch. Aber Borland und Microsoft sehen das wohl irgendwie anders. ;)

Zur Erläuterung:

int ist ja ein Integer, wie du hoffentlich weißt. Also eine Ganzzahl. void ist wie gesagt "leer". Wenn ein Programm "zu Ende" ist, dann wird dem Betriebssystem gesagt ob das Programm nun erfolgreich verlaufen ist, oder es zum Abbruch kam. Dazu dienen verschiedene Werte. 0 ist "erfolgreich", 1 ist "Fehler", dann gibt es weitere spezifizierte Fehler-Zahlen.

Dank "Borland-Verblödung" wissen manchmal nicht mal mehr Lehrer wie ein richtiges ANSI-C++-Programm auszusehen hat. Ist eigentlich traurig...

"Richtig" sieht es eigentlich so aus:
Code:
#include<iostream>

int main(int argc, char* argv[])
{
      float a,b,c;
      std::cout<<"Programm zur Addition von zwei Zahlen."<<std::endl;
      std::cout<<"Geben sie die erste Zahl ein: ";
      std::cin>>a;
      std::cout<<"\nGeben sie die zweite Zahl ein: ";
      std::cin>>b;
      c=a+b;
      std::cout<<"\n\nDie Summe von "<<a<<" und "<<b<<" ist "<< c<<"."<<std::endl;
      return 0;
}
 
tja.. das fiese an der ganzen sache ist, das das ganze so wie ich es oben geschrieben habe (mal abgesehn von den kommentaren die ich weggelassen habe) haargenau so in unserem manuskript steht. grundlagen der programmierung mit C++ heißt das ganze, herausgegeben vom datadidact-verlag.
und in dem ding steht nix davon dass das nur für borland geeignet ist..
schöne scheiße.

also danke schonmal an alle helfer, ich befürchte allerdings, dass ich euch noch öfters brauchen werde...
 
Das ist der alte C++-Standard und das wird halt in vielen Schulen noch so beigebracht weil aeltere Compiler das halt noch nicht koennen. Und wenn man alte Buecher oder Dokus dafuer erwischt lernt man halt den alten Standard... (dabei beziehe ich mich auf die Verwendung von <iostream> und std::)
 
DejaVu!

Was habe ich zum Thema "kann nur auf Borland x.xx programmieren" gesagt? :D

Nebenbei:

Code:
// Entweder so

#include <iostream.h>

int main(int argc, char **argv[]) {
    // hier gehts weiter
    return 0;
}

// Oder so

#include <iostream>

using namespace std;

int main(int argc, char **argv[]) {
    // hier gehts weiter
    return 0;
}

Edit:
Übrigens sieht der ANSI Standard vor daß die main() Funktion immer einen int Wert zurückgibt. Also void main() funktioniert zwar bei manchen Compilern, ist aber nicht richtig. Das Gewurschtel in der Klammer (int argc, char **argv[]) ist für die Parameterübergabe an die Hauptfunktion nötig, kann also bei einem Programm daß ohne Kommandozeilenparameter auskommt auch weggelassen werden. Wobei argc die Anzahl der übergebene Parameter, und das Array argv[] die Parameter selbst enthällt.

BadHorsie
 
Zuletzt bearbeitet:
Jein schrieb:
tja.. das fiese an der ganzen sache ist, das das ganze so wie ich es oben geschrieben habe (mal abgesehn von den kommentaren die ich weggelassen habe) haargenau so in unserem manuskript steht.

Um es so verständlich für dich auszudrücken wie möglich.
Deine Schule hat irgentwann mal Geld ausgeben bzw. Geld für bekommen um Compiler anzuschaffen. Diese sind nun so alt das sie einiges nicht beherschen was sich im laufe der Jahre an C++ geändert hat. C++ hat viele neuerungen Erfahren unter anderem das mit den "Namespaces" so auch der Grund warum das ganze von oben nicht lief.
Jetzt sitzt du zwischen zwei Stühlen. Zum einem hast du einen nach Iso hast du nicht gesehen funktionierenden Compiler und einen aus der Steinzeit. Das ist so wie wenn du dich mit einem Menschen von 1800 unterhalten würdest. Nur das beim Programmieren alles 1000% richtig sein muss.
Es gibt jetzt zwei Möglichkeiten entweder du bringst deine Schule dazu neue Compiler zu kaufen und richtiges Standart C++ zu unterrichten oder du lernst die einfach die unterschiede (sind nicht viele) und änderst den Code jeweils vorher ab.
 
BadHorsie schrieb:
Das Gewurschtel in der Klammer (int argc, char **argv[]) ist für die Parameterübergabe an die Hauptfunktion nötig, kann also bei einem Programm daß ohne Kommandozeilenparameter auskommt auch weggelassen werden. Wobei argc die Anzahl der übergebene Parameter, und das Array argv[] die Parameter selbst enthällt.

Kleine Verbesserung: Es muss char *argv[] oder char **argv heissen. char **argv[] ist afaik nicht korrekt.
 
Achherrje... lang ist's her. Hast recht.

BadHorsie
 
Zurück
Oben Unten