Forum: Mikrocontroller und Digitale Elektronik sin() Function unbekannt


von C. H. (hedie)


Lesenswert?

Hallo zusammen

Ich habe folgenden Code-teil:
1
#include <math.h>
2
....
3
4
5
uint16_t i=0;
6
7
for(i= 0; i < SCALE; i++)
8
{
9
   sine[i] = (int)(sin(PI2 * i / SCALE) * SCALE);
10
   cosi[i] = (int)(cos(PI2 * i / SCALE) * SCALE);
11
}

Compiler sagt:

---> undefined reference to `sin'
---> undefined reference to `cos'


Wenn ich jedoch dies schreibe:
1
uint16_t i=0;
2
3
sin(12);
4
5
for(i= 0; i < SCALE; i++)
6
{
7
   sine[i] = (int)(sin(PI2 * i / SCALE) * SCALE);
8
   cosi[i] = (int)(cos(PI2 * i / SCALE) * SCALE);
9
}

So hat er keine Probleme mit dem
1
sin(12);

Mach dies Sinn?

von Peter II (Gast)


Lesenswert?

Claudio H. schrieb:
> Mach dies Sinn?

durchaus, es ist nicht der Compiler sondern der linker der einen fehler 
meldet. Du must auch lib m hinzufügen -lm

sin(12) wird einfach wegoptimiert, weil es keinen sinn macht.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Claudio H. schrieb:
> Compiler sagt:
> ---> undefined reference to `sin'
> ---> undefined reference to `cos'

Das sagt nicht der Compiler, das sagt der Linker.

-lm

Hast Du das als Linkeroption angegeben?

von C. H. (hedie)


Lesenswert?

Vielen Dank!

Habe -lm vergessen!

Jetzt linkt er auch korrekt!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.