You are not logged in.


  • "Kleiner Compiler" started this thread

Posts: 484

Location: Rechenzentrum

Occupation: IT-lerin mit wenig Zeit

  • Send private message

1

Saturday, May 10th 2008, 1:15am

C FAQ

English version of C FAQ: http://compiler.cwsurf.de/blog/2008/07/1…nglish-version/

1.) Compiler für C
2.) Wie lerne ich C?
3.) Entwicklungsumgebungen für C
4.) Fenster und Grafik in C
5.) Ein Wort zu C, C++ und C#
6.) Warum geht das Programmfenster so schnell zu?
7.) Es heißt "int main" und nicht "void main"!

Hallo, liebe Besucherin, lieber Besucher des C Boards,

vielleicht bist du nur zufällig auf diese Seite geraten oder hast sie aus einem bestimmten
Grund aufgerufen. Hier soll es um die Programmiersprache C gehen, genauer gesagt soll,
hier ein Überblick zu den Dingen gegeben werden, die man benötigt, um mit C arbeiten zu
können. Jedoch soll nicht C in seiner ganzen Ausprägung und Vielfältigkeit beschrieben
werden. Wer sich für die Struktur der Sprache interessiert, sei auf den entsprechenden
Wikipedia-Artikel verwiesen.
Warum das Ganze, magst du jetzt denken. Das liegt einfach daran, dass bestimmte
Fragen immer wieder im Board auftauchen. Daher eine kleine Bitte an dich: Bevor du
etwas fragst, versuche mögliche Lösungen für dein Problem mit einer Recherche mit
Google und der Boardsuche zu finden.
Die Utopie von heute ist die Realität von morgen. (Ernst Bloch)

This post has been edited 2 times, last edit by "Kleiner Compiler" (Jul 10th 2008, 4:35pm)


  • "Kleiner Compiler" started this thread

Posts: 484

Location: Rechenzentrum

Occupation: IT-lerin mit wenig Zeit

  • Send private message

2

Saturday, May 10th 2008, 1:16am

1.) Compiler für C

Möchte man programmieren, so braucht man für jede Programmiersprache einen Compiler
bzw. Interpreter. Außerdem benötigt man noch Bibliotheken zum Programmieren in der
jeweiligen Programmiersprache. Diese Bibliotheken liegen dem Compiler bzw.
Interpreter meistens bei. Für genauere Informationen zieht man am besten die
Herstellerseiten zu Rate oder begibt sich mit der Suchmaschine seines Vertrauens auf
Erkundungstour.
Für C sieht die Auswahl wie folgt aus:

GCC
http://gcc.gnu.org/releases.html

MinGW
http://www.mingw.org/download.shtml

Borland (Komandozeilen Compiler ist getrennt von der IDE erhältlich):
http://cc.codegear.com/free/cppbuilder

Pelles C
http://www.christian-heffner.de/index.ph…ownload&lang=de

MS Visual C++
http://www.microsoft.com/germany/express…ad/default.aspx
Die Utopie von heute ist die Realität von morgen. (Ernst Bloch)

  • "Kleiner Compiler" started this thread

Posts: 484

Location: Rechenzentrum

Occupation: IT-lerin mit wenig Zeit

  • Send private message

3

Saturday, May 10th 2008, 1:18am

2.) Wie lerne ich C?

Programmieren lernt man durch's Programmieren – dieser Satz beinhaltet viel Wahres.
Das Wissen dazu kommt in Büchern, Online-Tutorials und anderen Formen daher.
Wichtig ist, dass man immer wieder eigene Experimente mit der Programmiersprache
macht.
Für C gibt es sehr viel Literatur, die zum Teil auch online verfügbar ist:

C von A bis Z:
http://www.pronix.de/pronix-4.html

Dinge, die man in C/C++ vermeiden sollte.

C-Programmierung I-V:

C Programmierung I: wie funktioniert C ?

C-Programmierung II: Quelldateien und Header

C-Programmierung III: Variablen

C-Programmierung IV: Operationen

C-Programmierung V: Pointer bzw. Zeiger

Robsite – Tutorial Sammlung:
http://www.robsite.de/index.php
Die Utopie von heute ist die Realität von morgen. (Ernst Bloch)

  • "Kleiner Compiler" started this thread

Posts: 484

Location: Rechenzentrum

Occupation: IT-lerin mit wenig Zeit

  • Send private message

4

Saturday, May 10th 2008, 1:22am

3.) Entwicklungsumgebungen für C

Wenn es um das bloße Eintippen des Quelltextes geht, würde ein einfacher Editor (kein
Word oder sowas ähnliches), der Textdateien speichern kann, genügen. Für das
Schreiben von Programmcode sind allerdings Editoren vorzuziehen, die die Syntax
(Datentypen, reservierte Schlüsselwörter, Klammern, etc.) hervorheben.

Notepad++
http://notepad-plus.sourceforge.net/de/site.htm

Kate
http://linux.softpedia.com/get/Text-Edit…Kate-2317.shtml

Emacs
http://www.zdnet.de/downloads/prg/c/3/deGGC3-wc.html

vi
http://www.heise.de/software/download/vim_gvim/7116


Arbeitet man einmal an größeren Projekten, sprich ein Programm setzt sich aus mehreren
Modulen zusammen, macht der Einsatz von IDE's Sinn. Man sollte, wenn möglich
verschiedene IDE's ausprobieren, um für sich die Richtige zu finden:

Eclipse
http://www.eclipse.org/

Netbeans
http://www.netbeans.org/

DevC++
http://www.bloodshed.net/devcpp.html

Code::Blocks
http://www.codeblocks.org/

MS Visual C++ Express Edition
http://www.microsoft.com/germany/express…ad/default.aspx

Anjuta
http://sourceforge.net/projects/anjuta

Kdevelop
http://www.kdevelop.org/index.html?filen…4/download.html
Die Utopie von heute ist die Realität von morgen. (Ernst Bloch)

  • "Kleiner Compiler" started this thread

Posts: 484

Location: Rechenzentrum

Occupation: IT-lerin mit wenig Zeit

  • Send private message

5

Saturday, May 10th 2008, 1:23am

4.) Fenster und Grafik in C

Da in der C-Standardbibliothek keine Möglichkeit vorgesehen ist so etwas wie Fenster zu
erzeugen, muss man auf zusätzliche Bibliotheken zurückgreifen. Bedenke zudem, dass
mittlerweile viele Grafikbibliotheken und -engines in C++ geschrieben sind. Das bedeutet
dass nur Teile der Funktionalität ansprechbar ist oder sich die Bibliothek bzw. Engine
nicht verwenden lassen. Hier im Forum finden sich genug Beiträge zu diesem Thema.

Für GUI's:

WinAPI
http://www.win-api.de/

GTK
http://www.gtk.org/download-linux.html

Für Grafikrendering:

OpenGL
http://www.opengl.org/

Aus dem Forum:
Grafisch Programmieren
Programm mit umgebung??
Die Utopie von heute ist die Realität von morgen. (Ernst Bloch)

  • "Kleiner Compiler" started this thread

Posts: 484

Location: Rechenzentrum

Occupation: IT-lerin mit wenig Zeit

  • Send private message

6

Saturday, May 10th 2008, 1:24am

5.) Ein Wort zu C, C++ und C#

„C in so vielen Geschmacksrichtungen? Hilfe!“
Auf den ersten Blick erscheint das Ganze ziemlich verwirrend und so mancher
Programmieranfänger stellt sich die Frage „Was davon soll ich lernen?"
Diese Frage lässt sich pauschal nicht beantworten, sondern hängt von vielen Faktoren ab,
wie Anwendungsgebiet („Was möchte ich mit der Sprache programmieren?“), bevorzugte
Programmierweise (z.B.: objektorientiert, prozedural und so weiter) und Verfügbarkeit für das
verwendete Betriebssystem.
Bei allen dreien handelt es sich um eigenständige Programmiersprachen, die
Gemeinsamkeiten (z.B. Ähnlichkeiten in der Syntax), aber auch große Unterschiede (z.B.
Grad der Objektorientierung) aufweisen. Hier hilft nur gründliches Informieren und (sollte das
nicht ausreichen) Ausprobieren. Beim Ausprobieren lässt sich, meiner Meinung nach, relativ
schnell feststellen, ob die gewählte Programmiersprache zu einem passt oder nicht. Man
sollte sich bewusst fragen: „Komme ich mit der umfangreichen Syntax von C++ zurecht?“,
„Möchte ich objektorientiertes Programmieren und dessen Grundsätze (Vererbung,
Kapselung, Polymorphismus) erlernen?“ und, und, und...

Wer die Frage stellt, was von den dreien die bessere Programmiersprache sei, wird
unterschiedliche Antworten erhalten. Ein absoluter C#-Fan wird wahrscheinlich für C#
plädieren, während ein langjähriger C-Programmierer dir zu C raten wird. Aus diesem
Grunde wird es hier keine Empfehlung meinerseits geben, sondern nur dieser Hinweis: Es
verbietet niemand, dass man sich zwei von den dreien oder gar alle aneignet.
Die Utopie von heute ist die Realität von morgen. (Ernst Bloch)

  • "Kleiner Compiler" started this thread

Posts: 484

Location: Rechenzentrum

Occupation: IT-lerin mit wenig Zeit

  • Send private message

7

Saturday, May 24th 2008, 3:02pm

6.) Warum geht das Programmfenster so schnell zu?

Ich nehme mal an, dass du mit C erst angefangen hast und nun bei deinem ersten Programm
folgendes Problem auftritt:
Das schwarze Konsolenfenster geht so schnell zu, so dass du kaum sehen kannst, was dein
Programm macht.
Vielleicht sieht dein erstes Programm in etwa so aus:

Source code

1
2
3
4
5
6
#include <stdio.h>

int main (int argc, char *argv[]) {
	printf("Mein erstes Programm!");
	return 0;
}


Der Compiler sollte es dir ohne Probleme in ausführbaren Programmcode übersetzen. Wenn du das
Programm jetzt selbst ausführst oder diesen Job die IDE wie DevC++ machen lässt, dann werden
genau die Zeilen (korrekt) abgearbeitet.
Mit return 0 sagt das Programm dem Betriebssystem (z.B. Windows oder Linux), dass es
keinen Fehler bei der Ausführung gab. Wurde der Lauf des Programms beendet, gibt es
keinen Grund, warum das Fenster noch länger geöffnet bleiben sollte.
Aber das Problem lässt sich wie folgt aus der Welt schaffen:

Source code

1
2
3
4
5
6
7
#include <stdio.h>

int main (int argc, char *argv[]) {
	printf("Mein erstes Programm!");
	getchar(); // Wartet auf Eingabe eines Zeichens
	return 0;
}


Manche schreiben da an Stelle von getchar() nämlich system("pause"). Und das sollte man
tunlichst vermeiden, obwohl es funktioniert!!!
system("pause") ist ein sogenannter System-Call, also der Aufruf einer Funktion, die das
Betriebssystem bereitstellt. Und da Betriebssysteme zum Teil sehr unterschiedlich gestrickt
sind, passiert dann das:
Was bei Betriebssystem A funktionierte, geht bei Betriebssystem B gar nicht!
Ein Beispiel wäre folgender System-Call system("cls"); Dieser bewirkt unter Windows, dass
Textausgaben auf der Konsole entfernt werden. Möchte man nun dasselbe bei einem
linuxbasiertem Betriebssystem machen, müsste man system("clear") schreiben.

Edit Rolf: einen Fehler korrigiert
Die Utopie von heute ist die Realität von morgen. (Ernst Bloch)

  • "Kleiner Compiler" started this thread

Posts: 484

Location: Rechenzentrum

Occupation: IT-lerin mit wenig Zeit

  • Send private message

8

Thursday, July 10th 2008, 3:06pm

7.) Es heißt "int main" und nicht "void main"!

Diese Thematik ist ebenfalls ein richtiger Dauerbrenner im Forum. Zur Sache:
In der Sprachspezifikation von C ist ein void main nicht vorgesehen. Die main Funktion war schon immer eine Funktion mit einem Rückgabetyp.
Darum nochmal deutlich:

Source code

1
2
3
4
5
6
int main (){
    
    // ganz viel Code

    return 0;
}


Eine ausführliche Erkärung findet sich unter: http://www.gidnetwork.com/b-66.html
Die Utopie von heute ist die Realität von morgen. (Ernst Bloch)

Rate this thread