Verständnissfrage zu C++

M

MarcOSX

Mitglied
Thread Starter
Dabei seit
14.01.2004
Beiträge
25
Reaktionspunkte
0
Während ich bei JavaCode auf jedem BS das gleiche zu sehen bekomme(meistens jedenfalls), würde ich gerne mal fragen wie sich das bei c++ verhält. Das ist ja, soweit ich weiss nicht Plattformunabhängig. Bedeutet das, das wenn ich ein und das selbe Programm auf vershiedenen Betriebssystemen schreibe der Code anders ist(sein muss). Oder kommt es darauf an welchen Compiler ich verwende? Oder hab ich nu alles vertauscht.

Die Problematik ist das wir in der Uni nun mit C++ auf Windows und Eclipse (PlugIn) anfangen werden. Und ich nun nicht weis inwieweit ich mit MacOS X10.2 "mithalten" kann, da es dieses PlugIn nicht expliziet für MacOSX gibt.

Wenn ich C++ Code im Project Builder schreiber muss ich dann noch per Hand übers Terminal gehen um ihn auszuführen oder funzt das über das Programm direkt und wenn ja muss da hinsichtlich des Compilers bezüglich Windows und Linux beachten.

Das klingt jetzt vielleicht alles ein bischen verworren, wäre dennoch für antworten dankbar.
 
Solange ihr nicht mit Sachen wie dem MFC (M$ Foundation Classes) oder anderen Plattformspezifischen APIs arbeitet (man steinige mich bitte NICHT, wenn ich das Wort in falschem Kontext missbrauchen sollte), kannst du deine Quelltexte auf allen möglichen Plattformen übersetzen (ausser du verwendest plattformspezifischen Code). Nimm dir am besten den SubEthaEdit zur Hand, schreibe dort deinen Code und übersetze das File mit dem Terminal (gcc -Wall source.cpp). Am Ende bekommst du eine Binary raus. Ich vermute mal, dass ihr auch regelmässige Programmieraufgaben lösen müsst, und da sollt ihr sicherlich eh nur den Quellcode abgeben. Ansonsten kannst du C++-Projekte auch in XCode bzw. im ProjectBuilder direkt starten.

Horror
 
Hi,

C, Obj-C und C++ sind an sich plattformunabhängig. Plattformabhängig werden Anwendungen eben dann, wenn man z.B. ein plattformabhängiges API (wie eben z.B. WinAPI, worauf auch z.B. die MFC bloß aufsetzen) benutzt.
Ich denke aber, dass ihr vorerst eher bloß Konsolenanwendungen programmieren werdet und deshalb sollte es auch so erstmal keine Probleme geben.
Problematisch könnte es werden, wenn ihr anfangt, Anwendungen mit GUI zu programmieren. Aber auch da gibt es plattformunabgängige Lösungen (z.B. QT, GTK, wxWidgets, ...).

Ciao
 
zudem würde ich Dir empfehlen nicht XCode zu verwenden, sondern das Terminal und von Hand kompilieren.
Spätestens wenn Ihr anfangt mit make und Makefiles zu arbeiten, wirst Du das ohnein brauchen.
Insgesamt entwickelt man so IMHO auch ein besseres Verständnis und letztendlich auch die Fähigkeit zum plattformunabhängigen Arbeiten.
Am Ende kommst Du unter Windows in der DOS Box, unter Linux oder am Mac klar, wenn Du codest und kompilierst.
 
Ich hab heute mit dem KursDozenten gesprochen und mir das so wie ihr erklärt. sicher machen wir vorerst keine GUI Anwendungen aber später auf jeden Fall. er meinte aber das er Tool gefunden habe das sowohl unter Win Linux und Mac einsetzbar ist. Wir werden sehen.

Noch mal kurz zum Compiler. Ich öffne das Terminal suche das richtige Verzeichnis und schreibe:
gcc Beispiel.cpp wie bei Java zum Beispiel javac Beispiel.java.

Ich hab nämlich auch schonmal was von pico und vi gelesen. Sind das andere Compiler die ebenfalls verfügbar sind?
 
pico und vi sind Editoren für die Shell.
 
pico und vi sind editoren.

Ich würde Dir zu 175% raten unbedingt den vi zu lernen.
Der ist sowas von klasse zum Coden
Features (nur einige Beispiele)
- ultraschnell
- integrierte Skriptsprache
- Syntax Highlighting (zB für c, c++, perl, html und viele mehr)
- Autoindent (automatische Einrückung)
- merkt sich offene Klammern
- Umgang mit regulären Ausdrücken
- Mustererkennung
- read Funktion (liest ander Dateien ein (zB Vorlagen))
- globales Ersetzen
- Zugriff auf shell aus dem Editor möglich
- auf allen Unix und Linux Systemen verfügbar; außerdem für Win und andere erhältlich (kostenlos)
...
und vieles mehr.

Am Anfang ist der schwierig, aber es lohnt sch auf jeden Fall

Ich versuch mal einen Screenshot (vi im Terminal, c-code offen) anzuhängen:
 

Anhänge

  • bild 3.png
    bild 3.png
    16,6 KB · Aufrufe: 123
Hab mir mal mit Hilfe der Software Restore CDs alles bis auf die Spiele installiert, also auch die Entwicklerwerkzeuge.
Wie aber muss ich jetzt verfahren um 'nen Compiler zu installieren/zu benutzen?
Brauche C++ für die Uni.
Hab probehalber mal gcc3.2 installiert, lässt sich auch in X11 ausführen.
Allerdings hat unser Prof. immer g++ benutzt. Nun befürchte ich, dass der "anders" kompiliert...
Kann mir bitte einer dazu was sagen?

Vielen Dank.
 
hallo

Also mit den devTools (unter 10.3) wird sowieso schon die Version 3.3 installiert.
Warum Du da zusätzlich was installiert hast, versteh ich nciht.
Anstelle vin X11 würde ich unbedingt Terminal benutzen.


lrwxr-xr-x 1 root wheel 7 9 Feb 15:25 /usr/bin/g++ -> g++-3.3
lrwxr-xr-x 1 root wheel 7 9 Feb 15:25 /usr/bin/gcc -> gcc-3.3

der gcc ist AFAIK eigentlich ein C Compiler, während der g++ ein c++ Compiler ist,
Beide können aber inzwischen letztendlich Beides und funktionieren auch weitgehend gleich.
Man kann damit auch Objective-c, Assembler, Fortan und vieles mehr kompilieren

Einzelheiten kannst du ggf. der man-page entnehmen, aber Vorsicht, die ist ellenlang :D

Ich denke, du komms auf jeden Fall ohne Schwierigkeiten klar.
Mac OS X ist wie geschaffen für c und c++.

schau mal:
lrwxr-xr-x 1 root wheel 7 9 Feb 15:25 c++ -> g++-3.3
lrwxr-xr-x 1 root wheel 7 9 Feb 15:25 c++-3.3 -> g++-3.3
lrwxr-xr-x 1 root wheel 4 9 Feb 15:25 c++3 -> g++3
lrwxr-xr-x 1 root wheel 27 9 Feb 15:25 c++filt -> ../libexec/binutils/cxxfilt
-r-xr-xr-x 1 root wheel 47512 16 Mar 11:55 c++filt2
-r-xr-xr-x 1 root wheel 97016 16 Mar 11:55 c++filt3
....
....
lrwxr-xr-x 1 root wheel 7 9 Feb 15:25 cc -> gcc-3.3
....
....
lrwxr-xr-x 1 root wheel 7 9 Feb 15:25 g++ -> g++-3.3
-r-xr-xr-x 1 root wheel 135816 16 Mar 11:55 g++-3.3
-r-xr-xr-x 1 root wheel 118020 16 Mar 11:55 g++2
-r-xr-xr-x 1 root wheel 139924 16 Mar 11:55 g++3
-r-xr-xr-x 1 root wheel 13105 13 Sep 2003 gatherheaderdoc
lrwxr-xr-x 1 root wheel 7 9 Feb 15:25 gcc -> gcc-3.3
-r-xr-xr-x 1 root wheel 131720 16 Mar 11:55 gcc-3.3
-r-xr-xr-x 1 root wheel 117980 16 Mar 11:55 gcc2
-r-xr-xr-x 1 root wheel 135828 16 Mar 11:55 gcc3
lrwxr-xr-x 1 root wheel 8 9 Feb 15:25 gcov -> gcov-3.3
-r-xr-xr-x 1 root wheel 61392 16 Mar 11:55 gcov-3.3
-r-xr-xr-x 1 root wheel 61200 16 Mar 11:55 gcov3
-rwxr-xr-x 1 root wheel 911 4 Dec 16:53 gdb
Auschnitt aus /usr/bin.
Du siehst: alles da was man so braucht
 
Also, ich hab in meiner /usr/bin/ folgende "Sachen" für C:
gcov3
gcc3
c++3
g++3

Wenn ich folgendes:
#include <iostream>
using namespace std;
int main( ) {
int summe,a,b;
// Lies die Zahlen a und b ein
cout << "a und b eingeben:";
cin >> a >> b;
/* Berechne die Summe beider Zahlen
*/ summe = a+b;
// Zeige das Ergebnis auf dem Bildschirm an
cout << "Summe=" << summe; }

in 'ner Datei (summetest.cpp) speichere und mit "c++3 /Pfad/zu/summetest.cpp" kompilieren will kommt eine irre lange Fehlermeldung.
Wenn ich aber "c++3 -I /Developer/ -o /Pfad/Summe /Pfad/zu/summetest.cpp" benutze kommt "nur noch" dieser Fehler:
/Users/user1/Documents/summetest.cpp:1:20: iostream: No such file or directory
/Users/user1/Documents/summetest.cpp: In function `int main()':
/Users/user1/Documents/summetest.cpp:6: `cout' undeclared (first use this
function)
/Users/user1/Documents/summetest.cpp:6: (Each undeclared identifier is reported
only once for each function it appears in.)
/Users/user1/Documents/summetest.cpp:7: `cin' undeclared (first use this
function)

Hab keinen blassen Schimmer warum der sich beschwert, obwohl ich ihm doch die include Dateien mit auf'n Weg gebe...
 
Zuletzt bearbeitet:
Der Compiler beschwert sich über die fehlende Klasse "iostream", die für die standard Ein- und Ausabe über Tastatur und Bildschirm zuständig ist.
Daher kennt der Compiler auch nicht die Funktionen zur ein und ausgabe (cin und cout).
 
Hast Du die Developertools installiert? Die Software-restore CD platziet nur ein Installationspacket unter .../Programme/Installers das Du erst ausführen must.
 
Da bin ich grad dabei :)
Allerdings verstehe ich trotzdem nicht, warum die Datei auf'm System ist, aber nicht gefunden wird...
 
Vielleicht ist nur die Runtime zum ausführen, aber nicht die nötigen Libarys zum
compilieren auf dem Rechner (kenn ich so von Linux, unter OS X bin ich auch neu).
 
JUHUUUUU!!!!
Jetzt klappt's!
Dachte, dass er beim Software Restore die DevTools auch installiert.
Seht gut, jetzt kann ich auch für die Uni anfangen zu lernen :)

VIELEN DANK AN ALLE!!!
Besonders an cyko, Du hast den Stein so richtig in's Rollen gebracht :)
 
/* Berechne die Summe beider Zahlen
*/ summe = a+b;
:D
vielleicht übersichtlicher so:
// Berechne die Summe beider Zahlen
summe = a+b;

Willkomen bei den Programmierern!
und
Viel Spass noch :)
 
Zurück
Oben Unten