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"? 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 :-) ) Ich bin auch nur aufgrund deiner Frage neugierig geworden, da ich round bis dahin auch nicht kannte. Erste Quelle in solchen Frage ist daher immer die Man-Page, gefolgt von den den zugehörigen Headern. * Auf -std=...? Wird in "man gcc" beschrieben. * Auf c99 als Sprachstandard? gcc < 3.x kennt c99 als Sprachstandard nicht. gcc >= 3.x hingegen schon und unterstützt ihn mit zunehmender Version weitergehender. Die von David beschrieben Präprozessor-Tricks aktivieren lediglich die in neueren glibc2's enthaltenen c99-Support-Funktionen und ermöglichen den Zugriff auf c99-Funktionen in "gcc-Default-Sprachstandard" Programmen (Vgl. /usr/include/features.h) -std=c99 hingegen schaltet den gcc auf c99-Sprachstandard um und geht damit deutlich weiter. Ralf