C:Präprozessor

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C:Präprozessor

Beitrag von Xin » Mo Okt 06, 2008 9:05 pm

Metamorph hat geschrieben:
Xin hat geschrieben:
Xin hat geschrieben:...bitte nach C:Preprozessor verschieben, danke.
Verschoben.
Ich verstehe es nach wie vor nicht. ^^
oO
Du hattest das Kapitel "C:Der Präprozessor" genannt. Ich habe es in "C:Preprocessor" verschoben. Kein Artikel, englischer Seitenname. Aber da ist Deine Seite nicht die einzige.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: C:Präprozessor

Beitrag von Dirty Oerti » Mo Okt 06, 2008 9:14 pm

Vielleicht sollte man Regeln/Normen zur Namensgebung von Kapiteln/Artikeln aufstellen/verbreiten? :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C:Präprozessor

Beitrag von Xin » Di Okt 07, 2008 8:03 am

Dirty Oerti hat geschrieben:Vielleicht sollte man Regeln/Normen zur Namensgebung von Kapiteln/Artikeln aufstellen/verbreiten? :)
Definitiv... es gibt unterschiedliche Formatierungen in den Artikeln, da müssen wir mal brauchbare Regeln machen.

Ich versuche die Tage mal eine Templateseite zu schreiben.


<edit>Am Rande, ich habe eben den Präprozessorartikel mal überflogen. Zum einen *THUMBS UP*.
Ich habe die Überschriften hochgesetzt, es gibt 6 Überschriften: An alle: bitte benutzt diese auch der Reihe nach, also zuerst

Code: Alles auswählen

====== Titel ======

Bla

===== Unterkapitel =====

Snafu Foo bar Baz!
Wenn ihr da Wünsche an die Optik habt, dann muss man sich darüber unterhalten, aber die Kapitelstruktur sollte einheitlich und einfach nachvollziehbar verwendet werden.


Zu dem Artikel selbst nochmal: Der wird langsam zu groß. Außerdem ist CPP (C-Präprozessor) eine eigene Sprache, daher schlage ich vor, dass Du den Artikel aufspaltest und in einen eigenen Namensraum "C:Pre" eröffnest, mit Startseite als Übersicht, was man mit dem Preprozessor alles machen kann.

Weiterhin wird dieser Namensraum überschaubar sein, das bedeutet, wir könnten in diesem Namensraum Navigationskonzepte ausprobieren, ohne gleich 100 Seiten überarbeiten zu müssen.
</edit>
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Metamorph
Beiträge: 123
Registriert: Sa Jul 05, 2008 12:27 pm

Re: C:Präprozessor

Beitrag von Metamorph » Mi Okt 08, 2008 12:32 am

Xin hat geschrieben:Du hattest das Kapitel "C:Der Präprozessor" genannt. Ich habe es in "C:Preprocessor" verschoben. Kein Artikel, englischer Seitenname. Aber da ist Deine Seite nicht die einzige.
*_Zaunpfahl_endlich_sehe_* :)
Zu dem Artikel selbst nochmal: Der wird langsam zu groß. Außerdem ist CPP (C-Präprozessor) eine eigene Sprache, daher schlage ich vor, dass Du den Artikel aufspaltest und in einen eigenen Namensraum "C:Pre" eröffnest, mit Startseite als Übersicht, was man mit dem Preprozessor alles machen kann.
Alles klar, werde ich machen.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C:Präprozessor

Beitrag von Xin » Mi Okt 08, 2008 9:05 am

Metamorph hat geschrieben:
Zu dem Artikel selbst nochmal: Der wird langsam zu groß. Außerdem ist CPP (C-Präprozessor) eine eigene Sprache, daher schlage ich vor, dass Du den Artikel aufspaltest und in einen eigenen Namensraum "C:Pre" eröffnest, mit Startseite als Übersicht, was man mit dem Preprozessor alles machen kann.
Alles klar, werde ich machen.
Sofern Du es noch nicht gemacht hast, verschieb es nicht in den Namensraum "C:Pre:", sondern "Pre:", da der Preprocessor a) eine eigenständige Sprache ist und b) von C++ genauso genutzt wird. ^^

Weiterhin wäre ein Kapitel über Seiteneffekte noch super:

Code: Alles auswählen

#define max( a, b ) ( ( (a) > (b) ) ? (a) : (b) )

int main( void )
{
  int a = 4, b = 3;

  int c = max( a++, b );

  printf( "c: %d\n", c ); // was kommt raus?
}
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Metamorph
Beiträge: 123
Registriert: Sa Jul 05, 2008 12:27 pm

Re: C:Präprozessor

Beitrag von Metamorph » Do Okt 09, 2008 4:39 pm

Xin hat geschrieben:Weiterhin wäre ein Kapitel über Seiteneffekte noch super:

Code: Alles auswählen
#define max( a, b ) ( ( (a) > (b) ) ? (a) : (b) )

int main( void )
{
int a = 4, b = 3;

int c = max( a++, b );

printf( "c: %d\n", c ); // was kommt raus?
}
5?

Was verstehst du unter Seiteneffekten?

EDIT:

Weiss jemand, wieso man sowas in Headerdateien schreibt?:

Code: Alles auswählen

#ifndef __HEADER_H__
#define __HEADER_H__
/*...*/
#endif

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C:Präprozessor

Beitrag von Xin » Do Okt 09, 2008 5:01 pm

Metamorph hat geschrieben:
Xin hat geschrieben:Weiterhin wäre ein Kapitel über Seiteneffekte noch super:

Code: Alles auswählen
#define max( a, b ) ( ( (a) > (b) ) ? (a) : (b) )

int main( void )
{
int a = 4, b = 3;

int c = max( a++, b );

printf( "c: %d\n", c ); // was kommt raus?
}
5?
Wäre möglich...

Folgendes ist hier eindeutig definiert:

Code: Alles auswählen

      printf( "a: %d\n", a ); // was kommt raus?   HIER WIRD NACH a GEFRAGT, NICHT NACH c.
Metamorph hat geschrieben:Was verstehst du unter Seiteneffekten?
In dem Fall, dass das Programm abhängig vom Compiler, mit dem es kompiliert wird zu unterschiedlichen Ergebnissen kommt.

Aber man kann mit Macros auch sehr schön regelmäßige Effekte erzeugen, die man aber trotzdem nicht haben möchte.
Metamorph hat geschrieben:EDIT:

Weiss jemand, wieso man sowas in Headerdateien schreibt?:

Code: Alles auswählen

#ifndef __HEADER_H__
#define __HEADER_H__
/*...*/
#endif
Wenn __HEADER_H__ nicht definiert ist, dann definiere __HEADER_H__ und viele andere Dinge in der Datei.
Wenn __HEADER_H__ definiert ist, dann springe an #endif.

Stünde das nicht davor, würden die vielen anderen Dinge mehrfach definiert, und C/C++ würde meckern, wenn die Datei von anderen Header-Dateien mehrfach eingebunden würde. Braucht Dein .c File HeaderA.h und HeaderB.h und beider brauchen HeaderH.h würde alles in HeaderH.h zweimal definiert => Mecker.
HeaderA liest die Definitionen von HeaderH ein und HeaderB liest HeaderH ein, überspringt dann aber alle Definitionen => kein Gemecker.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: C:Präprozessor

Beitrag von Kerli » Do Okt 09, 2008 11:52 pm

Xin hat geschrieben:
Metamorph hat geschrieben: Weiss jemand, wieso man sowas in Headerdateien schreibt?:

Code: Alles auswählen

        #ifndef __HEADER_H__
        #define __HEADER_H__
        /*...*/
        #endif
Wenn __HEADER_H__ nicht definiert ist, dann definiere __HEADER_H__ und viele andere Dinge in der Datei.
Wenn __HEADER_H__ definiert ist, dann springe an #endif.

Stünde das nicht davor, würden die vielen anderen Dinge mehrfach definiert, und C/C++ würde meckern, wenn die Datei von anderen Header-Dateien mehrfach eingebunden würde. Braucht Dein .c File HeaderA.h und HeaderB.h und beider brauchen HeaderH.h würde alles in HeaderH.h zweimal definiert => Mecker.
HeaderA liest die Definitionen von HeaderH ein und HeaderB liest HeaderH ein, überspringt dann aber alle Definitionen => kein Gemecker.
Es wundert mich irgendwie, dass du das noch nie gesehen hast. Normalerweise wird das in jedem Buch/Tutorial gleich nachdem man das Verteilen des Quellcodes auf mehrere Dateien durchmacht erwähnt. Häufig wird es auch 'Include-Guard' genannt, da es vor mehrfachen 'Includes' schützt.

edit: Ich glaub so ein Kapitel könnten wir auch noch irgendwo einbauen. Ich glaub das Aufteilen auf mehrere Dateien fehlt uns noch...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Metamorph
Beiträge: 123
Registriert: Sa Jul 05, 2008 12:27 pm

Re: C:Präprozessor

Beitrag von Metamorph » Fr Okt 10, 2008 12:33 am

Kerli hat geschrieben:Es wundert mich irgendwie, dass du das noch nie gesehen hast. Normalerweise wird das in jedem Buch/Tutorial gleich nachdem man das Verteilen des Quellcodes auf mehrere Dateien durchmacht erwähnt. Häufig wird es auch 'Include-Guard' genannt, da es vor mehrfachen 'Includes' schützt.
Ja, in dem Buch, in dem ich das gelesen habe, stand es auch drin. Allerdings wurde nicht erklärt, warum das so gemacht wird. In einem E-Book wurde diese Methode noch nicht einmal gezeigt.
Kerli hat geschrieben:edit: Ich glaub so ein Kapitel könnten wir auch noch irgendwo einbauen. Ich glaub das Aufteilen auf mehrere Dateien fehlt uns noch...
Was meinst du jetzt genau damit?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C:Präprozessor

Beitrag von Xin » Fr Okt 10, 2008 8:06 am

Kerli hat geschrieben:edit: Ich glaub so ein Kapitel könnten wir auch noch irgendwo einbauen. Ich glaub das Aufteilen auf mehrere Dateien fehlt uns noch...
Wir haben noch keine größeren Projekte im Tutorial vorbereitet.

Wir sollten Makefile vorziehen, so sie dass vor den komplexeren Datenstrukturen als bekannt vorausgesetzt werden können.
In den komplexeren Datenstrukturen sollten wir komplette Projekte zum Download anbieten, die per (einfachem) Makefile kompilierbar sind und die im Wiki ausführlich kommentiert werden.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten