Ich entwickle unter GNU/Linux Debian 8.5Fehler Verknüpfung Code mit `Boden();`, `ceil();` und `pow();`
ich ein einfaches Programm.
Wenn ich dies mit gcc prog.c
kompilieren, ist es OK!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
int main(int argc, char const *argv[]) {
float _f = 3.1415f;
floor(_f);
ceil(_f);
return 0;
}
Bud, wenn ich pow()
hinzufügen, heißt es, dass es nicht pow
finden und ich brauche gcc prog.c -lm
hinzufügen, um es richtig zu machen.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
int main(int argc, char const *argv[]) {
float _f = 3.1415f;
floor(_f);
ceil(_f);
pow(_f, 2);
return 0;
}
Wenn ich richtig, die pow()
, ceil()
sind floor()
alle von <math.h>
?
Also, warum nicht floor()
und ceil()
einen Kompilierungsfehler werfen, und pow()
tut, ohne -lm
Flagge?
verwendet gefunden Keine Bezeichner mit einem Unterstrich Präfix: https://stackoverflow.com/questions/38997919/is-it-permissible- for-global-static-identifiers-to-begin-with-a-single/38998123 # 38998123 – 2501
Beachten Sie, dass Sie die Rückgabewerte dieser Funktionen einer Gleitkommavariablen zuweisen müssen, damit sie verwendet werden können. Sie ändern nicht das Argument, das Sie bestehen. –
@ 2501: Unterstrich gefolgt von einem Kleinbuchstaben ist in Ordnung. – Dani