On Mon, 30 Jun 2003 at 11:16 (+0200), Ralf Corsepius wrote:
Am Fre, 2003-06-27 um 19.35 schrieb Bernhard Walle:
On Fri, 27 Jun 2003 at 15:07 (+0200), Ralf Corsepius wrote:
Am Fre, 2003-06-27 um 10.17 schrieb Bernhard Walle:
folgendes Problem:
,----[ test.c ]- | #include
| #include | | int main (int argc, char** argv) | { | printf("%f\n", round(0.5)); | | return 0; | } `---- [~] $ gcc -W -Wall -Wno-unused -lm -o test test.c test.c: In function `main': test.c:6: warning: implicit declaration of function `round' test.c:6: warning: double format, different type arg (arg 2)
man round .. CONFORMING TO C99. ..
Beachte C99 !!!
=> gcc -Wall -std=c99 -o test test.c -lm
Funktioniert (allerdings nur mit gcc 3.x), aber wie soll man da drauf kommen ... Worauf beziehst Du diese Anmerkung?
* Auf das "CONFORMING TO C99"?
Nein, steht in der Manpage.
Nun, "halbwegs erfahrene" C-Programmierer verwenden "ceil", (int)(val + 0.5) Tricks oder ähnliches und kommen gar nicht auf die Idee "round" zu verwenden, da diese Problematik zu den klassischen C-Grundkursübungen gehört (Ca. Lektion 5 in C-Anfängerkursen :-) )
Naja, ich programmiere relativ viel in Java und da gibt's Math.round(). In dem konkreten Fall (pos. Zahlen) habe ich dann auch val + 0.5 zu einem Integer gecastet verwendet, ich finde round() aber einfach schoener zu lesen.
* Auf -std=...?
Wird in "man gcc" beschrieben.
* Auf c99 als Sprachstandard?
Dass man, um den aktuellen Sprachstandard zu verwenden, irgendwas angeben muss.
gcc < 3.x kennt c99 als Sprachstandard nicht. gcc >= 3.x hingegen schon und unterstützt ihn mit zunehmender Version weitergehender.
Ich bin halt der Meinung dass ein Compiler grundsatzlich den neuesten Sprachstandard Gruss, Bernhard -- _________ http://www.bwalle.de _________________________________________________ Bei der Eroberung des Weltraums sind zwei Probleme zu lösen: die Schwerkraft und der Papierkrieg. Mit der Schwerkraft wären wir fertig geworden. -- Wernher von Braun