Wow, da ist man mal einen Tag nicht online und dann kommen so viele Antworten.
Also, der Reihe nach:
@DarkThing:
* bei den zwei xyz() Funktionen muss man bedenken, dass die Parameter char und int nicht als unterschiedlich gelten, da sie per standard ineinander überführt werden können, anders würde es aussehen, wenn Zeiger dabei wären.
* Den Datentyp long gib es gar nicht (siehe Punkt 2.3 in der Doku), da int bereits 32Bit hat und ich keinen 64Bit long machen wollte.
@PorkChicken:
* Nun, du hättest Punkt 2.18 genauer lesen sollen (wobei die Sache mit den Pre/Post-Increments von Compiler zu Compiler eh immer etwas anders ist): Das Increment/Decrement passiert vor oder nach dem Zugriff auf die Variable!
Das heißt folgendes:
int i=1,x;
x=
(i++) // auslesen der 1 aus i (danach Increment von i)
+i; // + 2
oder aber:
int i=1,x;
x=
(++i) // (increment von i) auslesen der 2 aus i
+i; // + 2
auch sehr interessant:
int i=1,x;
x=++i--; // i=1 x=2
klar soweit?
Entschieden habe ich mich für diese Vorgehensweise, weil es im ersten C-Compiler der Welt genauso war, da existierten nämlich auf der Architekur Befehle vergleichbar mit einem mov, nur dass sie beim Auslesen aus dem Speicher davor/danach ein increment/decrement automatisch durchführen konnten.
* Naja, das die ganzen Konstanten wie NULL und true, false als Defines gesetzt sind sollte eigentlich nicht weiter stören, oder?
Außerdem hat es mich schon immer gestört, dass ich für NULL einen Header brauchte...
* Und es gibt eine Möglichkeit das Überprüfen des Datums zu umgehen, indem man den Parameter -all benutzt.
@Thoth:
Ja, da kommt 4 raus, ansonsten siehe oben...
@taljeth, bluecode, PorkChicken:
Ich hoffe meine ausführliche Erklärung von oben löst dieses Problem mit den Pre/Post-Inc/Decrementen, oder?
MM