referencia potencia funcion ejemplo dev definir c math.h

potencia - sqrt en c



El uso de la funciĆ³n pow() arroja un error de referencia indefinido en C (4)

referencia indefinida a ''pow''

porque el poder para cualquier número debe tener un valor entero como potencia

pow(x,y) where, x must be real and y must be a whole number

¿Por qué el siguiente bit de código funciona en C?

int res = pow(2, 3); printf("%d/n", res);

mientras que este otro no?

int a = 2; int b = 3; int res = pow(a, b); printf("%d/n", res);

Incluso si lo intento

double a = 2; double b = 3; double res = pow(a, b); printf("%f/n", res);

Obtengo un

referencia indefinida a ''pow''

¿Qué estoy haciendo mal?


Cuando funciona, es porque el compilador hizo el cálculo (y se incluye en el binario como si lo hubiera escrito)

printf("8/n");

Cuando no funciona, se debe a que la función pow está incluida en la biblioteca matemática y la biblioteca matemática no está vinculada con el binario de manera predeterminada.
Para vincular la biblioteca matemática, si su compilador es gcc, use

gcc ... -lm ...

Con otros compiladores, debería ser el mismo :)
pero lee la documentación


Use así

#include <math.h> #include <stdio.h> int main(void) { for(int i = 1; i < 5; i++) printf("pow(3.2, %d) = %lf/n", i, pow(3.2, i)); return 0; }

Salida:

pow (3.2, 1) = 3.200000


undefined reference to ''pow'' suena como un error de enlazador. No está enlazando en la biblioteca matemática, incluso si introduce la función pow incluyendo <math.h> .

Con gcc, use el parámetro de línea de comando -lm para vincular en math lib.