• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Anfänger in C/C++: Ein paar Fragen

Cologne_Muc

Schöner von Nordhausen
Registriert
15.09.04
Beiträge
318
Hi,

ich war irgendwie motiviert und habe mir ein C/C++ Werk zugelegt und schon einiges gelesen. Das Problem ist allerdings (momentan) noch nicht die Sprache selbst.

Ich kann ja in XCode ein neues "File" öffnen, auf C spezialisiert, und dann meinen Code tippen. Danach muss ich es compilen. In allen Dokumentationen wird auf GCC verwiesen. Also geladen und installiert. Aber wider meiner Erwartung finde ich kein Programm auf der Festplatte, das GCC heißt und mit dem ich meinen gesicherten Code compilen könnte.

Jetzt nehme ich an, GCC ist in XCode integriert. Allerdings finde ich keinen Verweis, etwa ein "compilen" im Menü, oder ähnliches.

Wer kann mir da helfen?

Oder kurz und gut:
Kann mir mal einer den Weg (mitsamt Programmnamen) von einem C Quellcode bis zu einem ausführbaren Programm im Applications-Ordner aufführen?

Im Buch wird das als "Editor --> Compiler -->OS Test -->Bei Fehlern: Debugger -->Editor -->Compiler -->OS Test" dargestellt.

Schön und gut, aber wie das ganze in OS X?

Großen Dank
Daniel
 

mathilda

Leipziger Reinette
Registriert
17.02.05
Beiträge
1.787
Cologne_Muc schrieb:
Aber wider meiner Erwartung finde ich kein Programm auf der Festplatte, das GCC heißt und mit dem ich meinen gesicherten Code compilen könnte.

Evtl. wird da auch kein Icon in Deinem Programmordner angelegt, sondern Du startest sonndern Du startest den Compiler aus einer Shell.
 

Squart

Pomme Etrangle
Registriert
29.01.04
Beiträge
910
Es gibt 2 Wege: Der Weg direkt über Xcode und den Weg über das Terminal. Welchen du gehst bleibt bei dir, aber Xcode ist für größere Projekte ausgelegt und sollte von Anfängern gemieden werden. Meiner Meinung nach solltest jeder, der seine erste Programmiersprache lernt, direkt zur Kommandozeile gehen.

Der Weg über Xcode: Du musst ein neues Projekt, nicht eine neue Datei anlegen. Dabei wird dir ein ganzer Ordner mit mehreren Dateien angelegt, ein Grund mehr diesen Weg nicht für das Erlernen einer Sprache zu benutzen. Du müsstest als Projekttyp unter dem Punkt "Command Line Utility" für C "Standard Tool" und für C++ "C++ Tool" auswählen.
Sobald du dann ein neues Projekt hast kannst du einfach über die Toolbar auf "Build" gehen, wo dann automatisch compiliert wird.
Den Weg über des Terminals kannst du am Anfang folgendermassen erledigen: Nehme irgendeinen Texteditor (TextEdit reicht schon, wenn du willst kannst du auch Xcode nehmen, aber auch jeden anderen, der Plain-Text unterstützt), schreibe deinen Quellcode rein und speichre diese dahin, wo du sie haben willst, wobei du an den Dateinamen ".c" für C-Programme und ".cpp" für C++ anhängen musst. Anschließend begibst du dich über das Terminal mittels dem Befehl cd in das Verzeichnis, wo deine Datei ist (falls du noch nicht mit dem Terminal gearbeitet hast kannst du dort schauen: http://www.apfeltalk.de/forum/terminal-unix-grundwissen-t10656.html) und kompilierst mittels gcc meineDatei.c. Das compilierte Programm hat den Namen a.out, du kannst auch einen anderen Namen schon beim compilieren über gcc meineDatei.c -o NameDesProgrammes. Ausführen geht dann einfach über ./a.out bzw. ./NameDesProgrammes.

Gruß
Squart
 

Cologne_Muc

Schöner von Nordhausen
Registriert
15.09.04
Beiträge
318
Da ich schon etwas Erfahrung mit dem Terminal habe, hab ich gleich gewechselt.

okay. Nach dieser Angabe (die Datei heißt first.c)
Code:
Daniels-iMac:~/desktop danielbetz$ gcc first.c
kam dieser Fehler:
Code:
first.c: In function 'main':
first.c:5: error: stray '\' in program
first.c:5: error: parse error before "n"
Wo kann in diesem Quelltext
Code:
#include <stdio.h>

int main()
{
	printf("Hello, World"\n);
	return 0;
}
dieser Fehler sein?

Und dann nochwas. Das Programm "ausführen" im Terminal geht nur, solange man nicht auch eine GUI dazu programmiert. Richtig? Ist das die einzige Ausnahme?

Danke
Daniel
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
Das \n gehört in die Gänsefüßchen mit rein...
 

mathilda

Leipziger Reinette
Registriert
17.02.05
Beiträge
1.787
Cologne_Muc schrieb:
Und dann nochwas. Das Programm "ausführen" im Terminal geht nur, solange man nicht auch eine GUI dazu programmiert. Richtig? Ist das die einzige Ausnahme?

Wenn Du damit meinst, ob Du das Programm aus dem Terminal heraus starten kannst wenn es eine grafische Benutzerflaeche hat, dann nein. Das geht also auch dann.
 

Squart

Pomme Etrangle
Registriert
29.01.04
Beiträge
910
Cologne_Muc schrieb:
Und dann nochwas. Das Programm "ausführen" im Terminal geht nur, solange man nicht auch eine GUI dazu programmiert. Richtig? Ist das die einzige Ausnahme?
Hi,

die Frage ist: Was würdest du als GUI bezeichnen? Wie eng oder wie weit definierst du diesen Begriff?
Im Anhang sind 2 C-Dateien: Compiliere die Erste mittels gcc -lncurses ncurses.c und führe sie aus: Du hast schon farbige Textausgabe (Immerhin). Mit ncurses kannst du auch "Fenster" innerhalb des Terminals erstellen. Es gibt tolle Programme, die auf ncurses bauen, unter anderem vi oder emacs. Besitzen diese schon eine GUI?

Die Zweite kannst du mit gcc -framework GLUT -framework OpenGL OpenGL.c compilieren. Wenn du diese ausführst wird ein neues Fenster geöffnet, aber eigentlich haben wir nur ein Fenster mit Inhalt, da ist nicht wirklich eine GUI dabei, zumindest wurde keine programmiert.

Starten kannst du ein Programm über das Terminal auch direkt. Bsp: /Applications/iTunes.app/Contents/MacOS/iTunes in das Terminal eingeben. Das Programm wird quasi vom Terminal ausgeführt (wenn ich die Materie richtig verstanden habe), da es ein Kind-Prozess des Terminal-Prozesses ist.
 

Anhänge

  • Archiv.zip
    3,2 KB · Aufrufe: 80

Cologne_Muc

Schöner von Nordhausen
Registriert
15.09.04
Beiträge
318
Squart schrieb:
Hi,

die Frage ist: Was würdest du als GUI bezeichnen? Wie eng oder wie weit definierst du diesen Begriff?

Eine GUI fängt bei mir unter OS X damit an, dass das Programm einen Fesnterrahmen mit dem Schließen, Mini- und Maximieren Buttons besitzt. In diesem Fensterrahmen das äußere Programm. (Wobei ich noch keine Ahnung habe, wie man so etwas in C gestaltet. Bindet man da HTML ein?)

Beim Ausführen deiner ersten Datei mit
Code:
./a.out
passiert leider nichts ausser dass eine kleine Erläuterung in dieser Form
Code:
Usage: ./a.out <a c file name>
gegeben wird.

Deine Zweite hat für mich eine GUI. Nach meiner Definition. Ist ja sogar schon ein komplettes Menü mit Preferences enthalten.
So etwas in der Art war eigentlich mein Ziel. Nur dass ich das ganze noch per Programm-Icon im Finder öffnen können möchte, und im Fensterinhalt natürlich etwas "steuerbares" (wenns jetzt um ein Spiel ginge) programmiere.


Applications/iTunes.app/Contents/MacOS/iTunes[/B] in das Terminal eingeben. Das Programm wird quasi vom Terminal ausgeführt (wenn ich die Materie richtig verstanden habe), da es ein Kind-Prozess des Terminal-Prozesses ist.

Nun, das wusste ich. Aber was wäre, wenn ich dieses iTunes in einem C-Skript geschrieben hätte, im Terminal compiliert, und möchte es nun auch dort ausführen? Wird mir die ganze grafische Oberfläche dann als ASCII-Bildchen gezeigt? Man nehme an, mein Mac hätte nur das Terminal, keine grafische Oberfläche, und ich wollte mein iTunes mit GUI darauf ausprobieren. Ginge das, oder nicht? Darum hat sich meine Frage gedreht.

Am Anfang (also jetzt) mache ich natürlich nur reine Textfiles, mit Berechnungen etwa, aber irgendwann möchte ich auch mal etwas richtiges machen, und wenn ich die Programme dann, aufgrund GUI, nicht mehr im Terminal abspielen kann, brauche ich sie praktisch mit der Endung .app auf der Festplatte.
 

Cologne_Muc

Schöner von Nordhausen
Registriert
15.09.04
Beiträge
318
Hmm, die Edit-Funktion klappt irgendwie nicht.
Wollte noch hinzufügen, dass

-in TextEdit Dateien nicht mit der Endung .c abgespeichert werden können (ich habe natürlich schnell Ersatz gefunden)
-@sapps, wenn man kein ganzes Projekt in Angriff nimmt, sondern nur ein File, ist das ganze Menü "Build" ausgegraut.
 

Squart

Pomme Etrangle
Registriert
29.01.04
Beiträge
910
Hallo,

wenn du ein eigenes Fenster brauchst ist das erste Programm nichts für dich. Rein der Vollständigkeit halber: Um es aufzurufen musst du ./a.out irgendeineCDatei.c eingeben (wird in der ausgegebenen Meldung ja gesagt).

Wenn du richtige GUI programmieren willst und dies am besten nativ unter Mac OS X, also wenn du der Meinung bist, dass deine Programme so aussehen sollen, wie man es von den wunderschönen Programmen erwartet, dann führt wohl kein Weg an Cocoa vorbei (was dich auch dazu zwingt Objective-C zu benutzen). Mit Carbon kannst du auch nur auf mit C und C++ zugreifen, aber dann sind deine Programme meistens hässlich, ich kenne nur wenige gute Carbon Programme, aber es gibt sie. Schließlich kannst du noch mit Java eine GUI programmieren, diese ist allerdings überhaupt nicht Mac-Like, funktioniert aber. Und dann gibt es noch ein paar weitere Technologien, wie Revolution, RealBasic, und ähnliches, die meistens extra kosten.

Wenn du kurz Zeit hast kannst du ja mal ein Anfänger-Tutorial für Cocoa durchprobieren. Ich finde gerade keines für totale Anfänger, aber unter http://www.cocoadevcentral.com findest du einige Tutorials und wenn du von http://www.macdevcenter.com/pub/ct/37 die untersten 4 Artikel durchgearbeitet hast, so dürftest du schon wissen, ob dir Cocoa gefällt.

Gruß
Squart
PS: Um nochmals auf die GUI zu kommen: Gehe im Terminal in Tetris, drücke Escape-x und gebe dann tetris ein (kleingeschrieben!!!).
BTW: In dem OpenGL-Programm ist das Menü nicht von mir geschrieben worden, die Einstellungen auch nicht. Ist standardmäßig in jedem OpenGL-Programm auf Mac OS X dabei.
 

Cologne_Muc

Schöner von Nordhausen
Registriert
15.09.04
Beiträge
318
Squart schrieb:
Wenn du richtige GUI programmieren willst und dies am besten nativ unter Mac OS X, also wenn du der Meinung bist, dass deine Programme so aussehen sollen, wie man es von den wunderschönen Programmen erwartet, dann führt wohl kein Weg an Cocoa vorbei (was dich auch dazu zwingt Objective-C zu benutzen).

Hui, jetzt wird die Sache interessant. So kommt man von einer Sprache auf zwei weitere. Soll ich C/C++ dann ersteinmal hintendran stellen und mich mit Objective C befassen? (Und dann mit Cocoa)

Rein der Vollständigkeit halber: Um es aufzurufen musst du ./a.out irgendeineCDatei.c eingeben (wird in der ausgegebenen Meldung ja gesagt).
Okay, beim compilieren wurde halt eine a.out Datei erstellt, und die öffnet man normalerweise mit ./a.out
Wusste nicht, dass es da anders ist.

Dieses Tetris war Bestandteil einer Spielesammlung in der emacs - Umgebung, richtig? Habe leider den Thread nicht mehr gefunden, wie man hinkommt.

Gruß
Daniel
 

Squart

Pomme Etrangle
Registriert
29.01.04
Beiträge
910
Cologne_Muc schrieb:
Hui, jetzt wird die Sache interessant. So kommt man von einer Sprache auf zwei weitere. Soll ich C/C++ dann ersteinmal hintendran stellen und mich mit Objective C befassen? (Und dann mit Cocoa)
Nein, lerne erst noch weiter C. C++ ist eigentlich unwichtig für Objective-C, aber da Obj-C auf C aufbaut solltest du dies wenigstens können: Schleifen, Conditions, Literals, Pointers, Arrays, PreProcessor Anweisungen. Sobald du dies hast solltest du für Obj-C bereit sein.
Nur als Hinweis: Cocoa ist keine Programmiersprache, sondern eine API. Als Analogie könnte man sagen: Objective-C verhält sich zu Cocoa wie C zu Posix.
Cologne_Muc schrieb:
Okay, beim compilieren wurde halt eine a.out Datei erstellt, und die öffnet man normalerweise mit ./a.out
Wusste nicht, dass es da anders ist.

Dieses Tetris war Bestandteil einer Spielesammlung in der emacs - Umgebung, richtig? Habe leider den Thread nicht mehr gefunden, wie man hinkommt.

Gruß
Daniel
Wie das Tetris darein kommt weiß ich nicht. Gab es wirklich eine Spielesammlung in emacs? Finde ich allerdings ganz witzig, auch wenn es nicht wirklich spielbar ist :). Da empfehle ich doch eher Quinn zum Tetris spielen.

Gruß
Squart
 

Cologne_Muc

Schöner von Nordhausen
Registriert
15.09.04
Beiträge
318
Ich hatte mich mit dem Tetris eigentlich hierauf bezogen:
S: Um nochmals auf die GUI zu kommen: Gehe im Terminal in Tetris, drücke Escape-x und gebe dann tetris ein (kleingeschrieben!!!).

Wie komme ich denn in "Tetris", wenn du nicht diese Spielesammlung meinst?

Gruß
Daniel
 

Squart

Pomme Etrangle
Registriert
29.01.04
Beiträge
910
Cologne_Muc schrieb:
Ich hatte mich mit dem Tetris eigentlich hierauf bezogen:


Wie komme ich denn in "Tetris", wenn du nicht diese Spielesammlung meinst?

Gruß
Daniel
Entschuldigung, da habe ich einen Tippfehler eingebaut: Gehe im Terminal in emacs, drücke dort ESC-X ein und gebe dann tetris ein.
 

dikay

Cripps Pink
Registriert
16.11.05
Beiträge
148
hi! bin ebenfalls anfaenger.

so schlimm finde ich xcode nicht.

man tut folgendes:
- ein projekt fuer c dateien erstellen
- eine leere datei im projekt mit dem namen *.c erstellen
- code rein schreiben
- build & run druecken
- freude

wenn man ein neues kleines uebungsprogramm machen will:
- man klickt das alte rechts an und drueckt delete und danach "only restrictions" oder so
- dann wieder neue datei *.c
- usw.

komme damit gut zurecht..


aber noch eine frage, die sicher auch den autor interessieren duerfte:
wo findet man eine einfuehrung in objective-c und wie schwer ist es wenn man c kann?
ist obj-c (abkuerzung?) die einzige sprache fuer cocoa?

wenn ja, dann waere das eindeutig das richtige fuer meine semesterferien (=
 

Squart

Pomme Etrangle
Registriert
29.01.04
Beiträge
910
Hi,
dikay schrieb:
aber noch eine frage, die sicher auch den autor interessieren duerfte:
wo findet man eine einfuehrung in objective-c und wie schwer ist es wenn man c kann?
ist obj-c (abkuerzung?) die einzige sprache fuer cocoa?

wenn ja, dann waere das eindeutig das richtige fuer meine semesterferien (=
Eigentlich ist Obj-C (ist schon die richtige Abkürzung) nur eine Obermenge von C und ist überhaupt nicht schwer zu lernen, da es nur wenig gibt. Ein paar Tutorials findest du dort und hier. Wenn du nicht vor Englisch zurückschreckst solltest du auf alle Fälle Apples Developer konsultieren (einfach in den Bereich Cocoa gehen, dort findest du auch einen Anfängerartikel namens "Getting started with..." (oder so ähnlich)).
Englische Webseiten für Cocoa Anfänger gibt es genügend. Z.B.:
http://www.cocoadev.com
http://www.cocoadevcentral.com
http://www.macdevcenter.com
Falls du Probleme hast kannst du auch bei einer Mailing-List suchen, ob dieses dort schon gelöst worden ist:
http://www.cocoabuilder.com
OK, dass sind alle Links, die mir spontan einfallen. Bücher gibt es natürlich genug, die ersten 4 der folgenden Liste sind meiner Meinung nach Stand der Dinge: http://www.amazon.de/exec/obidos/tg...41791/sr=5-1/ref=sr_5_2_1/028-0561629-7221315

Viele Grüße
Squart
 

dikay

Cripps Pink
Registriert
16.11.05
Beiträge
148
vielen dank! werd ich mir mal reinziehen (=
 

michast

Stahls Winterprinz
Registriert
13.09.04
Beiträge
5.136
Vielleicht noch als Hinweis, bereits in einem anderen Fred gefallen.

Es gibt bei Amazon, oder überall sonstwo das Buch "Objective-C und Cocoa - Programmieren unter MacOS X" von Klaus M. Rodewig. Ist das erste Buch in deutsch, was ich gefunden habe. Für Fortgeschrittene sicher kein Gottesgeschenk aber für Einsteiger ganz toll geschrieben. Ist wohl leider in der Erstausgabe etwas Fehlerbehaftet, der Author hat eine Fehlerbereinigung auf der Webseite veröffentlicht.

Einzig, nachdem ich Windows C# und jetzt auch Java programmiert habe, fange ich nun noch mit C an. Das Buch setzt das zwar nicht voraus, vermittelt aber durchaus, dass es nicht schaden kann.

Gruß,
Michael
 

newman

Roter Eiserapfel
Registriert
02.06.05
Beiträge
1.436
Ich arbeite mich derzeit nebenbei mittels Hillegass "Cocoa Programming for Mac OS X" in die native Mac Programmierung ein und kann das Buch all jenen, die bereits einige praktische Erfahrung in C und einer objektorientierten Sprache besitzen wärmstens empfehlen. Reine Java-Leute sollten sich vorher unbedingt noch in Pointer einarbeiten.

Einsteigern in die Softwareentwicklung kann ich von diesem Buch nur abraten, für die dürfte die Lernkurve deutlich zu steil/frustrierend sein. Für erfahrene Coder ist es nahezu perfekt, ich persönlich habe in diesem Bereich selten ein derart gutes Buch in der Hand gehabt.