1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

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

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Cologne_Muc, 04.01.06.

  1. Cologne_Muc

    Cologne_Muc Schöner von Nordhausen

    Dabei seit:
    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
     
  2. sapps

    sapps Gast

    Probier es mal mit "Build" im Menü.
     
  3. mathilda

    mathilda Leipziger Reinette

    Dabei seit:
    17.02.05
    Beiträge:
    1.787
    Evtl. wird da auch kein Icon in Deinem Programmordner angelegt, sondern Du startest sonndern Du startest den Compiler aus einer Shell.
     
  4. Squart

    Squart Pomme Etrangle

    Dabei seit:
    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
     
  5. Cologne_Muc

    Cologne_Muc Schöner von Nordhausen

    Dabei seit:
    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
     
  6. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Das \n gehört in die Gänsefüßchen mit rein...
     
  7. mathilda

    mathilda Leipziger Reinette

    Dabei seit:
    17.02.05
    Beiträge:
    1.787
    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.
     
  8. Squart

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    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:

  9. Cologne_Muc

    Cologne_Muc Schöner von Nordhausen

    Dabei seit:
    15.09.04
    Beiträge:
    318
    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.


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

    Cologne_Muc Schöner von Nordhausen

    Dabei seit:
    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.
     
  11. Squart

    Squart Pomme Etrangle

    Dabei seit:
    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.
     
  12. Cologne_Muc

    Cologne_Muc Schöner von Nordhausen

    Dabei seit:
    15.09.04
    Beiträge:
    318
    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)

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

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    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.
    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
     
  14. Cologne_Muc

    Cologne_Muc Schöner von Nordhausen

    Dabei seit:
    15.09.04
    Beiträge:
    318
    Ich hatte mich mit dem Tetris eigentlich hierauf bezogen:
    Wie komme ich denn in "Tetris", wenn du nicht diese Spielesammlung meinst?

    Gruß
    Daniel
     
  15. Squart

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    Entschuldigung, da habe ich einen Tippfehler eingebaut: Gehe im Terminal in emacs, drücke dort ESC-X ein und gebe dann tetris ein.
     
  16. dikay

    dikay Cripps Pink

    Dabei seit:
    16.11.05
    Beiträge:
    149
    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 (=
     
  17. Squart

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    Hi,
    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
     
  18. dikay

    dikay Cripps Pink

    Dabei seit:
    16.11.05
    Beiträge:
    149
    vielen dank! werd ich mir mal reinziehen (=
     
  19. michast

    michast Adersleber Calvill

    Dabei seit:
    13.09.04
    Beiträge:
    5.810
    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
     
  20. newman

    newman Roter Eiserapfel

    Dabei seit:
    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.
     

Diese Seite empfehlen